SurveyMonkey

SurveyMonkey is an online survey platform that allows users to create surveys, collect responses, and analyze data.

omniload supports SurveyMonkey as a source.

URI format

surveymonkey://?access_token=<access_token>

URI parameters:

  • access_token: The access token used to authenticate with the SurveyMonkey API.

  • region (optional): The region. Must be us (default), eu, or ca.

For EU or CA accounts, specify the region:

surveymonkey://?access_token=<access_token>&region=eu

Setting up a SurveyMonkey Integration

SurveyMonkey requires an access token to connect to the API. To get one:

  1. Go to the SurveyMonkey Developer Portal and create a new app.

  2. Select the app type:

    • Private App (recommended for Enterprise plans): Issues a non-expiring access token directly. All users must belong to the same SurveyMonkey team.

    • Public App (for Basic/free plans): Issues a draft token that expires after 90 days.

  3. Under the Scopes section, enable the required scopes: View Surveys, View Responses, View Response Details, View Collectors, View Contacts.

  4. Click Update Scopes.

  5. Copy the Access Token from the Credentials section.

[!NOTE] For EU accounts, use the EU Developer Portal and set region=eu in the URI. For CA accounts, use the CA Developer Portal and set region=ca in the URI.

Once you have the access token, here’s a sample command that will copy survey data into a DuckDB database:

omniload ingest \
  --source-uri "surveymonkey://?access_token=your_token_here" \
  --source-table "surveys" \
  --dest-uri duckdb:///surveymonkey.duckdb \
  --dest-table "public.surveys"

Tables

SurveyMonkey source allows ingesting the following resources into separate tables:

Table

PK

Inc Key

Inc Strategy

Details

surveys

id

date_modified

merge

List of all surveys with metadata (title, dates, response count, question count)

survey_details

id

date_modified

merge

Full survey details including nested pages and questions as JSON

survey_responses

id

date_modified

merge

Survey response data with answers, collected per survey

collectors

id

date_modified

merge

Survey distribution channels (weblink, email, etc.)

contact_lists

id

-

replace

Contact lists

contacts

id

-

replace

Contacts across all statuses (active, optout, bounced)

Use these as the --source-table parameter in the omniload ingest command.