Skip to content

MaintenanceThe former company search endpoint goes into maintenance on November 9Migration guide

Endpoints // Lists

Export a List

New

Last verified

Available inAPIMCPSDKCLI

Download the members and Pending Intake of a List as a CSV file with the data the List holds, for free.

GET/v2/lists/:listId/export

Credits

Free.

Introduction

The Export a List endpoint downloads a List as a CSV file: the List Members, with the data the List already holds for each of them (profile fields, company, and the email and phone found by an import with the contact_email or contact_phone family), and the Pending Intake lines, with what was sent for them.

Exporting is free (0 credits): the file holds what the List stored, and nothing is looked up again. It counts toward your per-minute rate limit like any other call.

The API key needs the lists permission (see API key management).

Authorization

NameTypeRequiredDescription
apikeystringYesYour API key from the developer dashboard. Pass it via Authorization: Bearer YOUR_API_KEY header.

Request

The route is GET /v2/lists/:listId/export.

Path parameters

NameTypeRequiredDescription
listIdstringYesList id (UUID)

Response structure

A successful response is the CSV file itself (Content-Type: text/csv; charset=utf-8), not the JSON envelope: Content-Disposition names it list-<name>-<entity>.csv, where <name> is the List name in lowercase, without accents, with a dash in place of spaces and signs (list-q4-sales-leaders-persons.csv). The file has one header row, then one row per line of the List, members and Pending Intake mixed, in the order they were added. A value your team typed over a cell in the app replaces the enriched one, and an email or phone number typed in the app reads found with the source manual. A value that starts with =, +, -, @, a tab or a carriage return is prefixed with ', so a spreadsheet never reads it as a formula. Columns you added to the List in the app follow the default columns, headed by their name.

A Pending Intake row holds what was sent for it: linkedin_url is the URL of the Signal, name its first and last name (or else its company name, email or domain), currentCompanyName its company name. Its contact columns read not_attempted, unless your team typed a contact over the line in the app.

A people List has these columns:

ColumnContent
linkedin_urlProfile URL of the member
nameFull name
headlineProfile headline
locationLocation, as text
currentCompanyNameCurrent company
currentCompanyLinkedInUrlCompany page URL of the current company
contact_email_statusfound, not_found, error or not_attempted
contact_emailEmail found, empty otherwise
contact_email_sourceWhere the email came from, when known
contact_email_attempted_atWhen the email was looked for (ISO 8601)
contact_email_freshness_atDate of the email data (ISO 8601)
contact_phone_statusfound, not_found, error or not_attempted
contact_phonePhone number found, empty otherwise
contact_phone_typeKind of number when the provider gives one, such as mobile
contact_phone_sourceWhere the number came from, when known
contact_phone_attempted_atWhen the number was looked for (ISO 8601)
contact_phone_freshness_atDate of the phone data (ISO 8601)
currentCompanyWebsiteWebsite of the current company

A companies List has these columns: linkedin_url, name, industry, location, website, employeeCount, foundedOn, phone and description.

An error returns the usual JSON envelope, with quotas and metadata (see Usage): 404 LIST_NOT_FOUND when no List has this id in your workspace, or 404 LISTS_NOT_ACTIVATED when the workspace has never had a List.

The 200 status is sent with the first bytes of the file. An error during the download, or the 30-minute limit, ends the file early with that same 200: check that it holds one row per line of the List, the memberCount plus the pendingIntakeCount of Get a List, and export it again when rows are missing.

A workspace exports one List at a time. While a file is downloading, a second export returns 429 LIST_EXPORT_IN_PROGRESS, whichever API key asks: wait for the first to finish, then retry. 429 LIST_EXPORT_BUSY means the server is serving another export, and a retry usually gets through within seconds. Neither costs a credit. error.details.retryAfter and the Retry-After header give the seconds to wait. A download that stops reading is closed after 75 seconds, and one export runs for 30 minutes at most.

Code examples

Code Examples

curl https://api.reversecontact.com/v2/lists/3f6c2a8e-1b4d-4f0a-9c7e-5d2b8a1e6f40/export \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -o q4-sales-leaders.csv

Example response

The second row of this file is a Pending Intake line: an email no one matched.

Example Response

linkedin_url,name,headline,location,currentCompanyName,currentCompanyLinkedInUrl,contact_email_status,contact_email,contact_email_source,contact_email_attempted_at,contact_email_freshness_at,contact_phone_status,contact_phone,contact_phone_type,contact_phone_source,contact_phone_attempted_at,contact_phone_freshness_at,currentCompanyWebsite
https://www.social.com/in/janedoe,Jane Doe,VP Sales at Acme Corp,"Paris, France",Acme Corp,https://www.social.com/company/acme-corp,found,jane.doe@acme.com,,2026-10-28T09:16:02.000Z,2026-10-28T09:16:02.000Z,not_attempted,,,,,,https://acme.com
,unknown.person@example.com,,,,,not_attempted,,,,,not_attempted,,,,,,