Skip to main content

Exporting via the API

Programmatically export data from Beacon using our open API

Updated over 2 weeks ago

Note: This is in early access and will not appear in the main developer docs where you see most of our API calls.

Exporting data from your Beacon account can often be an integral part of reporting or data transfer between platforms. Whilst you can run exports directly from your Beacon account, if you're creating advanced automations you can use our API to programatically trigger an export and download the resulting file.

Process overview

  1. Create an Export template within your Beacon account

    Tip: We highly recommend setting fixed filters on your export template, unless you want all records of that record type

  2. Use the API to run an export for your chosen template
    ​

  3. Use the API to check on the export's progress

  4. When complete, use the temporary URL to download the CSV file of the export.


Export via the API

Use the same authorisation as you do for other API calls, as detailed in the developer docs.

To start an export, use the following endpoint:

POST: account/{ACCOUNT_ID}/entity_export/trigger

Replace {ACCOUNT_ID} with the ID of your charity. You can find this in the URL when logged into Beacon).

Pass along the object:

{
"entity_export_template_id": {EXPORT_TEMPLATE_ID}
}

Replace {EXPORT_TEMPLATE_ID} with the ID of your Export template, which can be found in the URL when viewing the template in your Beacon account.

This will return you an object including the ID of the newly started export:

{
"id": 751,
"name": "Example.csv",
"notes": null,
....etc.

This will also return the status (in_progress).

Using the ID that is returned, you can then make an API call to see the progress:

GET: account/{ACCOUNT_ID}/entity_exports?entity_export_id={EXPORT_ID}

This is the same entity_exports endpoint included in the developer docs, but you can pass a query string.

You will then get an array which contains the result of the ID that is passed to you:

{
"results": [
{
"id": 751,
"name": "Extraordinary.csv",
"notes": null,
"format": "csv",
"progress": 100,
"start_at": "2025-10-08T11:11:26.600Z",
"status": "finished",
"error_code": null,
"user_id": null,
"created_at": "2025-10-08T11:11:26.601Z",
"updated_at": "2025-10-08T11:11:29.519Z",
"entity_type_id": 32369,
"entity_export_template_id": 138,
"url": "******"
}
]
}

There are 2 ways to see if it is finished: the status "finished" or the progress (where 100 is 100% complete).

The URL that is returned is the temporary file link of the exported CSV that is generated for you whenever you call this API endpoint. This is a short-lived "signed" URL which automatically expires after 1 hour. This data file is available for 7 days. After this time, the url parameter will be null, and the file cannot be downloaded.


Frequently asked questions

Why does the URL not work when I use it?

URL are short-lived hashed links to the CSV file, so trying to retrieve the file after it has expired will result in an error. Try calling the entity_exports endpoint againg to get a fresh URL.

Can I make changes to export templates programatically?

No, all changes to export templates should be made within Beacon.

Can I combine an export API call with Zapier to make a periodic backup?

Yes, you can! Zapier can be an easier way to automate API calls, as well as to pass the resulting URL / file to another platform or storage location.

Use a 'Webhooks by Zapier' step to create an API call to your Beacon account.

Did this answer your question?