Skip to content

ENRICHLOOPS/ ENRICHMENT API

A little input.
A lot of context.

Turn a domain, work email, or LinkedIn URL into structured company and people data. One API, predictable tasks, and results your code can use.

100 free credits / month · No card.

THE API, IN THREE STEPSEXAMPLE
curl -X POST "https://api.enrichloops.com/v1/companies/enrich" \
  -H "Authorization: Bearer $ENRICHLOOPS_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"stripe.com"}'
POST /v1/companies/enrich
Real schema. No mystery fields.JSON / REST
REST API

Bearer key authentication

JSON out

Consistent, typed profiles

100 / min

Requests on every plan

14 days

Company and person refresh cycle

Send. Receive.
Build on it.

Enrichment runs in the background. Your first response is a task; the completed profile follows when it’s ready.

  1. 01

    Send an identifier.

    POST a domain with your Bearer API key. The request queues the lookup so your signup flow can keep moving.

  2. 02

    Keep the task ID.

    The 202 response contains a task and its credit charge. Save the ID on the record that started the request.

  3. 03

    Read the result.

    Receive a signed webhook through a Loop, or poll the task until it succeeds or fails. Successful results include the typed profile.

The details.
Up front.

Authentication, delivery, credits, and limits. Everything you need to understand the integration before your first call.

Full API reference
Base URL
https://api.enrichloops.com
Auth
Bearer API key, generated in the dashboard. Usage is tracked per key, not per seat.
Enrich
POST /v1/companies/enrich with a domain or a LinkedIn company URL
Response
202 with a task object. The company profile is not in this response.
Read the result
Webhook through a Loop, or GET /v1/tasks/{id} until status is succeeded
Webhook signature
HMAC-SHA256 over timestamp.body, sent in X-EnrichLoops-Signature with a timestamp for replay checks.
Credits
1 per company, 1 per person by LinkedIn profile URL, 3 per reverse email lookup. Failed and no-match results are refunded. Repeat lookups inside the 14-day refresh window are free.
Rate limits
100 requests/minute on every plan, raised on request.
Refresh
Company and person records refresh every 14 days on every plan.

The result arrives.
You know it’s ours.

Point a Loop at your HTTPS endpoint. Completed profiles arrive as a POST with a signature and a timestamp.

  • 01

    Check the signature

    Recompute HMAC-SHA256 over timestamp.body with your Loop secret. Compare the digest in constant time.

  • 02

    Check the timestamp

    Reject deliveries outside your tolerance window. The example uses five minutes.

  • 03

    Handle each delivery once

    Use X-EnrichLoops-Delivery-Id to make duplicate deliveries a no-op.

Webhook verification guide
THE WEBHOOK, IN DETAILEXAMPLE
POST https://yourapp.com/webhooks/enrichment
Content-Type: application/json
User-Agent: EnrichLoops-Webhook/1
X-EnrichLoops-Event: task.succeeded
X-EnrichLoops-Delivery-Id: 9f1c2a3e-...
X-EnrichLoops-Signature: t=1754570000,v1=6c3a9f...
The signature includes a timestamp and an HMAC-SHA256 digest.
Real schema. No mystery fields.JSON / REST

Pull the result.
Or let it come to you.

The same enrichment, JSON, and credits. Choose the delivery pattern that fits your workflow.

Make a little data
go a long way.

Get your API key and put enrichment to work. Start with 100 free credits a month. No card. No sales call.

Get your free API key

A FEW MORE DETAILS

Good questions. Clear answers.

What the API returns, how credits work, and how to connect your workflow.

A B2B enrichment API takes an identifier you already have, a company domain, a work email, or a LinkedIn URL, and returns structured facts about that business or person: industry, headcount, location, name, headline, current employer. You call it from a signup flow, a CRM workflow, or your own backend and route on the fields it returns.

Company records from a domain or a LinkedIn company URL, and person records from a work email or a LinkedIn profile URL, as typed JSON with a refresh timestamp on every record. Both use the same task and webhook shape. Technographics and job-change monitoring are in private beta and will use the same request shape, so you integrate once.

Yes. The Free plan is 100 credits a month, with no card and no sales call. Paid plans start at $25 a month for 1,250 credits. Every plan gets the same features and the same 100 requests per minute, so upgrading only buys you more credits. You upgrade from the dashboard and it applies immediately.

No. Create a Loop, point it at an HTTPS endpoint, and finished profiles arrive as a signed POST. If you would rather pull, POST the domain to the enrich endpoint and read the task at GET /v1/tasks/{id} until its status is succeeded or failed.

Each delivery carries X-EnrichLoops-Signature with a timestamp and an HMAC-SHA256 digest of timestamp.body, keyed with the Loop secret shown once at creation. Recompute the digest, compare in constant time, and reject anything older than your tolerance window. The reference implementation is about fifteen lines.

No. People enrichment works the other way round: you send a work email you already have and get the person back, with name, headline, location, and employment history. It does not find new emails and it does not return phone numbers. We enrich the contacts you have, we do not find new ones.

Anything that can make an HTTP request. Close and Pipedrive also connect natively for automatic company and contact enrichment. HubSpot, Customer.io, Zapier, n8n, Salesforce, and your own services can use Loops with an HTTP request and a webhook.