Skip to content

SurveyMonkey

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

ingestr 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.
  • datacenter (optional): The datacenter region. Must be us (default), eu, or ca.

For EU or CA accounts, specify the datacenter:

surveymonkey://?access_token=<access_token>&datacenter=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 datacenter=eu in the URI. For CA accounts, use the CA Developer Portal and set datacenter=ca in the URI.

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

sh
ingestr 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:

TablePKInc KeyInc StrategyDetails
surveysiddate_modifiedmergeList of all surveys with metadata (title, dates, response count, question count)
survey_detailsiddate_modifiedmergeFull survey details including nested pages and questions as JSON
survey_responsesiddate_modifiedmergeSurvey response data with answers, collected per survey
collectorsiddate_modifiedmergeSurvey distribution channels (weblink, email, etc.)
contact_listsid-replaceContact lists
contactsid-replaceContacts across all statuses (active, optout, bounced)

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