Delivery Methods / Webhooks
Asynchronous delivery for resilient workflows
Submit a request once: we fetch the data and push the result to your webhook when it’s ready. Best for high volume, queue-based pipelines, and uptime-sensitive automations.
No blocking, no polling: avoid retry storms and tight loops.
Workflow resilience: results arrive when ready, even under load.
Built for volume: ideal for batch jobs and background enrichment.
Traceable delivery: job IDs + status events for full observability.
Data points
Request data now. Receive it when it’s ready.
Use asynchronous jobs to reduce coupling with real-time latency and keep pipelines stable at scale.
POST /v2/fetch/persons/livecurl -X POST https://api.reversecontact.com/v2/fetch/persons/live \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://www.linkedin.com/in/janedoe",
"webhookUrl": "https://your-app.com/webhooks/reversecontact"
}'import requests
response = requests.post(
"https://api.reversecontact.com/v2/fetch/persons/live",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
json={
"url": "https://www.linkedin.com/in/janedoe",
"webhookUrl": "https://your-app.com/webhooks/reversecontact"
}
)
result = response.json()
print(result["data"]["status"], result["data"]["webhookId"])const url = "https://api.reversecontact.com/v2/fetch/persons/live";
const response = await fetch(url, {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
url: "https://www.linkedin.com/in/janedoe",
webhookUrl: "https://your-app.com/webhooks/reversecontact"
})
});
const result = await response.json();
console.log(result.data.status, result.data.webhookId);{
"webhookId": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
"data": {
"id": "prs_01jh4m7p0s3v6y9b2e5g8k1n4q",
"publicId": "janedoe",
"memberId": "286401114",
"linkedinUrl": "https://www.linkedin.com/in/janedoe",
"firstName": "Jane",
"lastName": "Doe",
"headline": "VP of Engineering @ Acme Corp",
"summary": "Backend leader specialized in TypeScript, DDD and…",
"pronoun": null,
"isOpenToWork": false,
"hasPremium": false,
"hasVerificationBadge": false,
"isInRemembrance": false,
"photoUrl": "https://media.licdn.com/…/profile.jpg",
"backgroundUrl": "https://media.licdn.com/…/background.jpg",
"creationDate": "2013-09-01T12:00:00.000Z",
"followersCount": 666,
"connectionsCount": 661,
"skills": [
"TypeScript",
"Domain-Driven Design (DDD)",
"Node.js",
"PostgreSQL"
],
"location": {
"city": "Paris",
"state": "Île-de-France",
"country": "France",
"countryCode": "FR",
"rawLocation": "Paris, Île-de-France, France"
},
"currentPosition": {
"title": "VP of Engineering",
"description": "- Leading engineering during a growth phase…",
"contractType": null,
"companyName": "Acme Corp",
"companyLinkedinId": "89181966",
"companyUrl": "https://www.linkedin.com/company/acme-corp",
"companyLocation": "Paris",
"companyLogoUrl": "https://media.licdn.com/…/logo.jpg",
"startEndDate": {
"start": "2026-01-01T00:00:00.000Z",
"end": null
}
},
"experience": [
{
"title": "VP of Engineering",
"description": "- Leading engineering during a growth phase…",
"contractType": "Permanent",
"companyName": "Acme Corp",
"companyLinkedinId": "89181966",
"companyUrl": "https://www.linkedin.com/company/acme-corp",
"companyLocation": "Paris",
"companyLogoUrl": "https://media.licdn.com/…/logo.jpg",
"startEndDate": {
"start": "2026-01-01T00:00:00.000Z",
"end": null
}
}
],
"education": [
{
"degreeName": "Engineer's Degree in Computer Engineering",
"fieldOfStudy": null,
"description": "Generalist engineering degree focused on IT…",
"grade": null,
"schoolName": "ESILV",
"schoolUrl": "https://www.linkedin.com/school/esilvparis",
"schoolLogoUrl": "https://media.licdn.com/…/logo.jpg",
"startEndDate": {
"start": "2016-01-01T00:00:00.000Z",
"end": "2019-12-31T00:00:00.000Z"
}
}
],
"languages": [
{ "language": "English", "proficiency": "Full professional proficiency" },
{ "language": "Chinese", "proficiency": "Native or bilingual proficiency" }
],
"recommendations": [
{
"authorFullname": "Karim Baali",
"authorUrl": "https://www.linkedin.com/in/karimbaali",
"caption": "Co-founder @Fragments Studio",
"description": "I had the opportunity to work with Jane, both…"
}
],
"certifications": [
{
"name": "Test of English for International Communication",
"organizationName": "ETS",
"organizationUrl": "https://www.linkedin.com/company/163705",
"issuedDate": null
}
],
"testScores": []
}
}Use cases
Where async webhook delivery wins
When reliability matters more than instant responses.
High-volume enrichment queues
Submit jobs in bulk, process in the background, and keep your workers efficient.
Uptime-sensitive workflows
Reduce hard dependency on immediate API responses and smooth over transient latency.
Data pipelines & ETL
Trigger enrichment as a step in your pipeline and receive structured payloads downstream.
Backfills & reprocessing
Re-run historical enrichments without hammering synchronous endpoints.
Rate-limit friendly processing
Let the system handle pacing and delivery, instead of building complex polling logic.
Event-driven architecture
Treat results as events you can route to CRM, warehouse, or internal services.
Process
How does it work?
A decoupled flow built for stable automation.
Create a job
Send identifiers + your
webhookUrl(or rely on your workspace default).We fetch and structure
Our system retrieves the data and standardizes it into a consistent schema.
Receive the payload
We POST the result to your webhook: the
webhookId+ the structureddata.
Testimonials
Trusted by data-driven teams
“Our data team built an internal ops product with Reverse Contact. It improved identity resolution across systems and provided a reliable people & company layer.”
Ethan CarterData Team, Gitpod“We use Reverse Contact as a trusted data provider for our product inside our RevOps workflows. It helps our customers unify CRM records and enrich missing context...”
David BrombergCEO, Lantern“Reverse Contact provided a reliable identity resolution layer for our product. The API is straightforward, outputs are consistent, and match quality is strong.”
Lucas PerretHead of Product, lemlistCompliance
Compliance-by-design. Built to be defensible.
Reverse Contact is designed to support GDPR/CCPA-aligned data practices. We maintain clear sourcing principles, respect data subject rights, and prioritize accuracy over guesswork.
- GDPR
- CCPA
FAQ
Frequently Asked Questions
Can't find the answers to your questions? Reach out to us by clicking here.
What counts as B2B people data?
Structured professional information about individuals in a work context: name, current title, company, work history, education, skills, seniority, industry, and location. Reverse Contact returns all of these through the people data API in a single verified profile.
Which fields does your people data API return?
Identity, professional history, education, skills, languages, location, industry, seniority, social signals, and metadata like last-updated timestamps and confidence scores. Full schema in the Documentation.
How do you handle uncertain matches?
We return null instead of a best guess. Every response includes a confidence score so your product decides what to do with borderline matches. You can also raise the precision threshold in your request.
How fresh is the data?
Retrieve profiles live on demand for maximum freshness, or pull from our database for lower latency. Every response includes a last-updated timestamp.
How is this different from a reverse email lookup tool?
Lookup tools return a name and maybe a title. Our people data API returns a full structured B2B profile per person: identity, professional history, education, skills, location, and more, built to be embedded in products and workflows.
Is Reverse Contact compliant with GDPR and CCPA?
Yes. Compliance is built into how we collect and process data. Full documentation in the Trust Center.
The data layer behind your GTM engine
Access fresh people and company data through one API and power every enrichment, prospecting, and automation workflow.
- Profiles
- 1B+
- Refreshes / month
- 200M
- Response time (P95)
- 500ms