Skip to main content

Contact Enrichment API

Send an email or LinkedIn URL and get back the person's signals and their employer as structured JSON.

POST/v1/contacts/enrich

curl -X POST https://signals.autobound.ai/v1/contacts/enrich \  -H "X-API-KEY: $AUTOBOUND_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "contact_linkedin_url": "https://in.linkedin.com/in/arundhati-bhattacharya-salesforce",    "signal_types": ["podcast-contact"],    "limit": 1  }'

Replace $AUTOBOUND_API_KEY with your key from the portal.

What's in each record

Signals about a person: podcast appearances, conference talks and job changes. Person-level coverage is low today, so many contacts return an empty contact_signals list with their employer filled in. About podcast appearance signals →

signal_subtype
podcastAppearanceThe event, one of 43 values
detected_at
2026-08-24T10:25:28.000ZWhen Autobound found it (UTC)
data.podcast_name
CII PodcastsThe show
data.episode_title
India@100: Powering the Future through Digital Acceleration ft Arundhati BhattacharyaThe episode
data.published_at
2026-06-05When the episode came out
data.episode_url
https://shows.acast.com/ciipodcasts/episodes/india100-powering-the-future-through-digital-acceleration-ftThe episode page

Also in this record: episode_id, host, occasion, topics, talking_points, is_ad, transcript_source

signal_iddca86039-9c23-54d3-b9c2-00eacdb38baf

Every field in the responseThe response, the contact block, the signal envelope and the data fields of the signal selected above.Show all 43 fields

Green rows are filled in the record selected above: Salesforce, Podcast guest.

Response

contactobject | null
The person you asked about (fields below)
companyobject | null
Their employer, as a company block
contact_signalsSignalResult[]
Signals about the person, up to limit
signal_summaryobject
Count of returned signals per type
totalinteger
Signals returned
coverage.total_before_filtersinteger
Signals on file before your filters
coverage.total_after_filtersinteger
Signals left after your filters
coverage.signal_types_availablestring[]
Types with at least one signal for this person
coverage.date_rangeobject | null
Earliest and latest signal date
warningsstring[]
Optional notes, such as an unknown subtype

Contact

contact.full_namestring | null
The person
contact.first_namestring | null
First name
contact.last_namestring | null
Last name
contact.job_titlestring | null, filled in the selected example
Current title
contact.emailstring | null
Work email, when known
contact.linkedin_urlstring | null, filled in the selected example
LinkedIn profile
contact.citystring | null
City
contact.statestring | null
State or region
contact.countrystring | null
Country

Signal

signal_idstring, filled in the selected example
Stable id. GET /v1/signals/{id} returns the signal
signal_typestring, filled in the selected example
The type, such as podcast-contact or work-milestones
signal_subtypestring, filled in the selected example
The event within the type
signal_namestring
Display name. Often empty: use data.summary
detected_atdatetime, filled in the selected example
When Autobound found it (UTC)
associationstring, filled in the selected example
"company" or "contact"

Company

company.namestring, filled in the selected example
The company the signal is about
company.domainstring, filled in the selected example
Root domain. The join key
company.linkedin_urlstring
Company LinkedIn page. May be a relative path
company.industriesstring[], filled in the selected example
Industry labels, when known
company.employee_count_*integer
Headcount low and high, when known
company.revenuestring, filled in the selected example
Revenue range, when known
company.descriptionstring | null
Short description. Often null

podcast-contact data

data.podcast_namestring, filled in the selected example
The show
data.episode_titlestring, filled in the selected example
The episode
data.episode_urlstring, filled in the selected example
The episode page
data.episode_idstring, filled in the selected example
Episode id. Joins every signal from one episode
data.hoststring, filled in the selected example
The show's host
data.published_atdate, filled in the selected example
When the episode came out
data.occasionstring, filled in the selected example
Why the guest is on the show
data.topicsstring[], filled in the selected example
Topics of the episode
data.talking_pointsobject[], filled in the selected example
What the guest said: a point and a quote
data.is_adboolean, filled in the selected example
true when the episode is an ad
data.transcript_sourcestring, filled in the selected example
Where the text came from, such as transcript

Pricing and limits

You pay in credits for what a call returns. A call that returns no results is free.

See all plans →
Enrich a contact
2creditsper signal returnedPOST /v1/contacts/enrich
Enrich a company
2creditsper signal returnedPOST /v1/companies/enrich
Free to start
1,000free credits at signup
Self-serve plans
$19Starter: 1,900 creditsPacks up to $4,999.
Rate limit
300requests per minutePer account, shared by all keys.

Questions

What does contact enrichment return?

The contact's profile, their employer and the signals about that person, such as podcast appearances, conference talks and job changes. Person-level coverage is low today, so many contacts return an empty contact_signals list. The employer still comes back in company.

Can I enrich by email or LinkedIn URL?

Yes, both. Send contact_email or contact_linkedin_url to POST /v1/contacts/enrich. At least one is required. Filter the returned signals with signal_types, signal_subtypes and detected_after.

Does contact enrichment include company signals?

It returns the employer's company block (name, domain, LinkedIn URL). For the employer's signals, such as hiring, news and SEC filings, call POST /v1/companies/enrich with that domain. Contact first, then company, is the pattern we recommend.

How much does it cost?

2 credits per signal returned. A call that returns nothing is free.

How many contacts are in the database?

270M+ professional contacts across 80M+ companies.

Make this call with your own key

One key works for all 35 signal types. 2 credits per signal returned. Calls with no results are free.

1,000 free credits to start.

Or use it from Claude Code, Cursor or any MCP client

Add the server, run /mcp to sign in, then ask: “Has this person spoken at a conference or on a podcast this year?”

claude mcp add --transport http autobound https://mcp.autobound.ai/mcp

Use it in Claude via MCP →