Skip to content

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

Use cases // Build lists

Build a list of people

New

Last verified

Build a prospect list with the people search API. Count matches for free, filter by title and location, use prompts or lookalikes, and cap credits.

You have

Title · location · companysearch filters
A search promptor a reference profile for Lookalike

The API

  • People search count

    POST /v2/search/people/count

    sync response
  • People search

    POST /v2/search/people

    sync response
  • Agentic Search

    POST /v2/search/people/prompt

    sync response
  • People lookalike

    POST /v2/search/people/lookalike

    sync response

You get

Jane Doe · Acme CorpMatching person profiles
credit per profile delivered by Search
1
credit per profile delivered by Lookalike
1
credit per Agentic Search page
1
additional credit per Agentic profile delivered
1
credits to count matches
0

Find people by job title, company and location, describe your audience in a prompt, or find people similar to a known profile. You can count a filtered search for free before retrieving profiles. Search returns full profiles synchronously from the index, within a budget you set.

Which endpoint

Input you haveEndpointCostMode
Filters to count matches before buying profilesPeople search countFreeSynchronous
Explicit filtersPeople search1 credit per profile delivered. An empty page is freeSynchronous
A description of the people to findAgentic Search1 credit per page plus 1 per profile deliveredSynchronous
One seed profile URL or person idPeople lookalike1 credit per profile delivered. An empty page is freeSynchronous

How it works

Set RC_API_KEY to your API key. Install the TypeScript SDK, Python SDK or CLI for your chosen example. Shell examples use jq. Prompt and lookalike searches are alternatives to filtered search, each with its own charges.

Count your target audience for free

Count people whose current title matches CTO and whose location is France. The response contains data.count without any profiles. Leave cursor and perPage out of the count request, then use the same filters for the paid search.

Code Examples

curl --fail-with-body -sS -X POST https://api.reversecontact.com/v2/search/people/count \
  -H "Authorization: Bearer $RC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"currentPositionTitle": "CTO", "location": {"country": "France"}}'

Read profiles within a credit budget

Retrieve at most 100 profiles for at most 100 credits. Request 25 at a time and reduce the final request to the remaining budget. The raw API returns profiles in data.data and the next cursor in data.metadata.nextCursor. SDK iterators handle pagination, and the CLI counts for free before searching.

Code Examples

remaining=100
cursor=""
filters='{"currentPositionTitle": "CTO", "location": {"country": "France"}}'
while [ "$remaining" -gt 0 ]; do
  size=$((remaining < 25 ? remaining : 25))
  body=$(printf '%s' "$filters" | jq --arg cursor "$cursor" --argjson size "$size" \
    '. + {perPage: $size} + (if $cursor == "" then {} else {cursor: $cursor} end)')
  result=$(curl --fail-with-body -sS -X POST https://api.reversecontact.com/v2/search/people \
    -H "Authorization: Bearer $RC_API_KEY" \
    -H "Content-Type: application/json" -d "$body") || break
  printf '%s' "$result" | jq -c '.data.data[]'
  delivered=$(printf '%s' "$result" | jq -er '.data.data | length')
  remaining=$((remaining - delivered))
  next_cursor=$(printf '%s' "$result" | jq -r '.data.metadata.nextCursor // empty')
  [ -z "$next_cursor" ] && break
  [ "$next_cursor" = "$cursor" ] && { echo "Repeated cursor" >&2; break; }
  cursor=$next_cursor
done

Describe the audience in a prompt

You can use Agentic Search when your input is a sentence. Inspect data.interpretation.filters and warnings before buying more pages. This example requests one page of up to 25 profiles, which costs at most 26 credits. Do not add explicit search filters alongside prompt.

Code Examples

curl --fail-with-body -sS -X POST https://api.reversecontact.com/v2/search/people/prompt \
  -H "Authorization: Bearer $RC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "CTOs at software companies in France", "perPage": 25}'

Find people similar to a seed profile

You can use People lookalike with exactly one indexed seed url or person id and no extra search filters. Results exclude the seed. This example retrieves at most 50 lookalikes for at most 50 credits.

Code Examples

remaining=50
cursor=""
filters='{"url": "https://www.social.com/in/janedoe"}'
while [ "$remaining" -gt 0 ]; do
  size=$((remaining < 25 ? remaining : 25))
  body=$(printf '%s' "$filters" | jq --arg cursor "$cursor" --argjson size "$size" \
    '. + {perPage: $size} + (if $cursor == "" then {} else {cursor: $cursor} end)')
  result=$(curl --fail-with-body -sS -X POST https://api.reversecontact.com/v2/search/people/lookalike \
    -H "Authorization: Bearer $RC_API_KEY" \
    -H "Content-Type: application/json" -d "$body") || break
  printf '%s' "$result" | jq -c '.data.data[]'
  delivered=$(printf '%s' "$result" | jq -er '.data.data | length')
  remaining=$((remaining - delivered))
  next_cursor=$(printf '%s' "$result" | jq -r '.data.metadata.nextCursor // empty')
  [ -z "$next_cursor" ] && break
  [ "$next_cursor" = "$cursor" ] && { echo "Repeated cursor" >&2; break; }
  cursor=$next_cursor
done

What it costs

People search and People lookalike cost 1 credit per profile delivered. An empty page costs nothing, and counting a filtered search is free. Every result is a full profile, so no second fetch is needed to get the profile fields.

Agentic Search costs 1 credit per page for the search, plus 1 credit per profile delivered. The page fee still applies when no profile matches. SDK iterators use maxResults / max_results to cap returned profiles, but this limit does not cover the extra page fees. Budget prompt pages separately or set an API key credit limit.

Good to know

Filters combine with AND. Supported arrays such as currentPositionTitle match any listed value. Title matching is token-based, so CTO can also match Deputy CTO.

Use currentCompanyIndustry values from Industry values, and full location.area ids such as MC:DACH from Area values. The currentFunction filter accepts values such as Marketing, and currentSeniority accepts Director and VP. Check the People search filter reference for all accepted values and exclusions.

For headcount, currentCompanyEmployeeCountRange matches whole size brackets: { "min": 51, "max": 200 } matches the 51 to 200 bracket. Unknown fields and invalid closed-list values return 422 and cost 0 credits. Search count calls still count toward your rate limits.

Request 1 to 100 profiles per page, 25 by default. Keep filters unchanged and pass the opaque cursor back as cursor. Stop when data.metadata.nextCursor is null or your budget is spent. A short or empty page can still have a next cursor.

For filtered People search, read successive pages within 10 minutes for a consistent cached result set. The pagination reference describes what happens after that.

For prompt searches, reuse the same prompt on the next page. You can send data.interpretation.filters to People search count for a free total after the first paid prompt page.

A lookalike seed must already be indexed. An unindexed URL returns a free 404. Search uses cached data, so use profile freshness checks when you need a refresh.

The examples print profiles for your application to store. To save people in a persistent Reverse Contact List and buy contact data, use Lists: orchestrate enrichment. For individual profiles, see Get a work email or a phone number.

FAQ

How do I count people matching search filters without spending credits?

Send the People search filters to POST /v2/search/people/count, without cursor or perPage. People search count returns data.count and costs 0 credits, but the call counts toward request rate limits.

Does an empty people search page mean there are no more results?

No. A search page can be empty while data.metadata.nextCursor is still set. Continue with that cursor until the cursor is null or your budget is spent.

Can I search for people using a sentence instead of filters?

Yes. Agentic Search accepts a prompt and returns the applied filters and warnings in data.interpretation. Each page costs 1 credit plus 1 credit per profile delivered. You cannot add explicit search filters alongside the prompt.

How do I find people similar to a Social profile?

Send exactly one seed url or person id to People lookalike. The seed must already be indexed and is excluded from the results. Each delivered lookalike costs 1 credit. People lookalike does not accept additional search filters.