Run SafetyCulture Exporter

Get up and running with SafetyCulture Exporter


  1. Download the latest release of the SafetyCulture Exporter for your platform (Windows, macOS, or Linux).
  2. Uncompress the file and move the extracted folder to where you want to store the SafetyCulture Exporter.
  3. Proceed to configure the SafetyCulture Exporter.


  1. Open your command-line application. This can be “PowerShell” for Windows and “Terminal” for macOS.

  2. In your command line window, navigate to the location where you stored the SafetyCulture Exporter. Learn how to change directory or folder using command lines on Windows and macOS.

  3. Run the following command line:
    ./safetyculture-exporter configure

    macOS users

    If you’re running macOS, you may come across the following error message: “safetyculture-exporter” cannot be opened because the developer cannot be verified. You can go to your Mac’s System Preferences > Security & Privacy > General settings to Allow Anyway, then retry the command line and click Open in the pop-up window.


    Windows Command Prompt users

    If you're using Windows Command Prompt rather than PowerShell, the command above may return an error. If you get an error around "." not being recognized, run .\safetyculture-exporter configure or safetyculture-exporter configure.

  4. Proceed accordingly to open the configuration file:

    Windows PowerShell

    Run the following command line: notepad.exe safetyculture-exporter.yaml

    All other command-line applications

    Run the following command line: open safetyculture-exporter.yaml

    If you have any trouble opening the configuration file, return to the folder where you stored the SafetyCulture Exporter and double-click "safetyculture-exporter.yaml" to open it.
  5. For a basic configuration, update the following fields:

    • access_token: Input your API token.
    • modified_after: Specify the date and time to start inspection exports from, based on the date inspections are modified, in Coordinated Universal Time (UTC). This field supports multiple date and time formats.
  6. Save the changes to the configuration file. You can check out all configuration options on this page.

  7. Proceed to run the SafetyCulture Exporter.

Configuration options

SafetyCulture Exporter relies on configuration files to determine what and where to export data and from which account's perspective.

When you download and configure the SafetyCulture Exporter for the first time, you will come across the following configuration options in the default "safetyculture-exporter.yaml" file:

access_token: ""
  proxy_url: ""
  tls_cert: ""
  tls_skip_verify: false
  max_rows_per_file: 1000000
  connection_string: ""
  dialect: mysql
  incremental: true
    archived: "false"
    completed: "true"
    included_inactive_items: false
    limit: 100
    skip_ids: []
    web_report_link: private
  media: false
  media_path: ./export/media/
  modified_after: ""
  path: ./export/
    include_deleted: false
    include_full_hierarchy: true
  tables: []
  template_ids: []
  filename_convention: INSPECTION_TITLE
  - PDF
  preference_id: ""

The following table outlines each configuration field's purpose and accepted values:

Make sure you leave a space ( ) between each configuration field and its value. For example, take note of the space between : and " for access_token: "de8g4e68bg...3acb983b5211".

access_token (required)Your API token.de8g4e68bg...3acb983b5211""
api.proxy_urlThe proxy URL to go through for API requests.""""
api.tls_certThe custom root CA certificate to use for API requests."/path/to/my/root-ca.pem"""
api.tls_skip_verifyThe flag to skip or not skip API TLS certificate verifications.true or falsefalse
api.urlThe SafetyCulture API URL. The default value should be used at all times.https://api.safetyculture.io
db.connection_stringThe database connection string.SQL: sqlserver://user:pass@localhost:1433?database=dbname
MySQL: user:pass@tcp(
Postgres: postgresql://user:pass@localhost:5434/dbname
db.dialectThe database dialect.mysql or postgres or sqlservermysql
export.incrementalThe flag to remember or not remember where the last export run for actions, action_assignees, inspections, inspection_items, and templates tables have gotten up to. We recommend keeping this set to true, so that the SafetyCulture Exporter only exports new or updated data.

Please note that if this is set to false, all previously exported data will be truncated.
true or falsetrue
export.inspection.archivedThe flag to export archived or active or both archived and active inspections."true" or "false" or "both""false"
export.inspection.completedThe flag to export completed or incomplete or both completed and incomplete inspections."true" or "false" or "both""true"
The flag to include or not include inactive question items in the inspection_items table for CSV and SQL. This is relevant to templates that use Logic fields (smartfield), where items nested under a Logic field that hasn't been triggered are considered inactive.

Please note that this setting can only be set before the database table is created. If you need to change this at a later date, drop the table first and allow it to be recreated.
true or falsefalse
export.inspection.limitThe limit for the number of inspections that gets processed per batch. This only applies to CSV and SQL exports.50100
export.inspection.skip_idsThe inspection IDs to skip for inspection exports.["audit_a3a4dcfa...8bdd55e7","audit_
export.inspection.web_report_linkThe flag to export private (requires log in to SafetyCulture) or public inspection report links.private or publicprivate
export.mediaThe flag to export media with CSV and SQL exports or not.true or falsefalse
export.media_pathThe absolute or relative path to save exported media files.C:\Documents\Inspection-media\./export/media/
export.modified_afterThe timestamp in Coordinated Universal Time (UTC) to start inspections and actions exports. This field accepts multiple date formats. If you want to export all time data from your organization, leave the default setting.2006-01-02T15:04:05.000Z
Mon, 02 Jan 2006 15:04:05 MST
02 Jan 06 15:04 MST
Monday, 02-Jan-06 15:04:05 MST
Mon Jan 2 15:04:05 2006
Mon Jan 2 15:04:05 MST 2006
02 Jan 2006
export.pathThe absolute or relative path to save exported data. This applies to all formats except for SQL.C:\Documents\SafetyCulture\./export/ flag to include or not include deleted sites in sites table exports.true or falsefalse flag to include full sites hierarchy in table e.g. areas, regions, etc.true or falsefalse
export.tablesThe CSV and/or SQL tables to export. By default, the SafetyCulture Exporter exports all data set tables, unless specified.[inspections,inspection_items][]
export.template_idsThe template IDs to filter by for inspections and schedules export.["template_0dda96ce...802197ea","templ
report.filename_conventionThe naming convention for inspection report exports. Either by the inspection title or the inspection ID.INSPECTION_TITLE or INSPECTION_IDINSPECTION_TITLE
report.formatThe format for inspection report exports.["PDF"] or ["WORD"] or ["PDF","WORD"]["PDF"]
report.preference_idThe report layout to apply for PDF and Word inspection reports. Please note that only report layouts for all templates can be used. Learn how to retrieve layout IDs."22af6c2b-e279-40b1-874f-0a4340930b6f"""

Available export options

The SafetyCulture Exporter can export the following data sets from your organization:

All data sets apart from inspection report and inspection JSON can be exported to CSV and SQL.

Data setDescriptionFormat value
Inspection reportExports the inspection reports you have access to.PDF and/or WORD
Inspection JSONExports the inspections you have access to in JSON format.N/A
InspectionsLists the inspections you have access to.inspections
Inspection itemsExports the inspection data you have access to.inspection_items
TemplatesLists templates you have access to.templates
Template permissionsLists the access level users and/or groups have over each template you have access to.template_permissions
SitesLists the sites in your organization.sites
Users (requires the "Platform management: Users" permission)Lists the users in your organization.users
Groups (requires the "Platform management: Group" permission)Lists the groups in your organization.groups
Group users (requires the "Platform management: Group" permission)Lists the users for each group.group_users
SchedulesLists the schedules you have access to.schedules
Schedule assigneesLists the assignees for each schedule you have access to.schedule_assignees
Schedule occurrencesLists the completion history for schedules you have access to.schedule_occurrences
ActionsLists the actions in your organization.actions
Action assigneesLists the assignees for each action.action_assignees
Action timeline itemsList the timeline items for each action in your organization.action_timeline_items
Issues (requires the "Issues: Access" permission)List the issues in your organization.issues
Issue timeline items (requires the "Issues: Access" permission)List the timeline items for each issue in your organization.issue_timeline_items
AssetsList the assets in your organization.assets

The format keys can be used to specify the data set tables to export. If you want to see the schema for each data set for CSV and SQL exports, run the following command line:
/.safetyculture-exporter schema

You can also check out each data set in detail to understand what each column's data means.

Please note that by default, the SafetyCulture Exporter exports all available data sets for CSV and SQL exports. However, you can customize the export.tables field in the configuration file to specify what you want to export.

Export data

Each time you run an export, remember to navigate to the directory or folder where you stored the SafetyCulture Exporter. Learn how to change directory or folder using command lines on Windows and macOS.

If you encounter an error when running the SafetyCulture Exporter, you may be able to refer to the error code and message to resolve the error yourself.

If you've made a mistake in the configuration file and want to reset your exports, you can delete the "export" folder in the SafetyCulture Exporter directory, then export again.

Export to CSV and SQL

  • Run the following command line to export data to CSV:
    ./safetyculture-exporter csv
  • Run the following command line to export data to SQL:
    ./safetyculture-exporter sql

If you want to export inspection media as well, update the flag for to true in the configuration file. Alternatively, you can export with media by supplying the media flag in the command line. For example:

  • CSV: ./safetyculture-exporter csv --export-media
  • SQL: ./safetyculture-exporter sql --export-media

Export to PDF and Word

Please note that the format needs to be specified in the configuration file.

Run the following command line to export inspection reports:
./safetyculture-exporter report

Alternatively, you can export inspection reports to PDF or Word by supplying the format flag in the command line. Please note that both format flags need to be entered in uppercase: PDF and WORD. For example:

  • PDF: ./safetyculture-exporter report --format PDF
  • Word: ./safetyculture-exporter report --format WORD

Export to JSON

Run the following command line to export inspection JSON:
./safetyculture-exporter inspection-json

Report layouts

You can use the SafetyCulture API to search for report layouts in your organization and use their IDs for applying to inspection report exports. You can search either for report layouts available to all templates or report layouts only available to specific templates.

Search report layouts:

curl "" -H "Authorization: Bearer {api_token}"

The above command returns JSON structured like this:

  "preferences": [{
    "id": "da5dceac-188a-4738-9550-a82b8801cef3",
    "label": "Example Layout 01",
    "is_global": true,
    "is_default": false
    "id": "93b6194c-c6b9-464b-a8dc-79fb6b48615c",
    "label": "Example Layout 02",
    "is_global": true,
    "is_default": false

Searching for a specific template's report layouts:

curl "<template_id>" -H "Authorization: Bearer {api_token}"