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.