Live 24H
Signals30,452,124,000

Summary: ContactBased API \u2014 Person-Level Intent Data + Contact Enrichment

The ContactBased API gives builders self-serve access to person-level intent and identity data. Free-text search any topic on the open web, paginate frozen exports forever, and batch-enrich up to 1,000 contact_ids per call. OpenAPI 0.1.0 spec, four endpoint surfaces (intent feeds, exports, organization/filters, enrichment), one stable cb_id that joins every row to every enrichment endpoint. Built for sales intelligence platforms, ad-tech and audience products, enrichment apps, and outbound tools. Wholesale licensing and custom contracts available for unrestricted feed access.

Key Features and Benefits:

Frequently Asked Questions Summary

Common questions and answers about our contact-level advertising platform:

What's the rate limit?
Intent feed search and feed export endpoints have generous per-key rate limits. Batch enrichment is capped at 1,000 contacts per call with no daily ceiling on enrichment volume on paid plans.
Is the API really free-text, or do you have predefined topics?
Genuinely free-text. Search any string in plain language — a product name, a competitor, a use case, a regional or vertical keyword. The system handles topic matching on its own.
How is enrichment billed?
Per enriched contact. Batch enrichment counts each contact_id in the array as one enrichment. Re-enriching the same contact_id within a feed quota window is free.
Do exports expire?
No. Frozen exports are stable forever. The same (export_id, page) returns the same rows every time. Re-reads do not consume additional quota.
Can I get unrestricted feed access?
Yes — wholesale data and unrestricted feed contracts are available for sales intelligence platforms, ad tech vendors, and identity resolution apps integrating ContactBased into their own product. Annual contracts. Custom licensing. Contact us for terms.

Built for builders

The person-level intent + identity API.

Self-serve OpenAPI 0.1.0. Search any topic on the open web. Page through frozen exports. Batch-enrich up to 1,000 contacts per call. No co-op contribution required.

Read the docs
curl -X POST https://api.contactbased.com/intent/feeds/search \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $CONTACTBASED_API_KEY" \
  -d '{
    "feed_id": "00000000-0000-4000-8000-000000000001",
    "lookback_days": 30,
    "include_daily_counts": true
  }'
{
  "feed_id": "00000000-0000-4000-8000-000000000001",
  "total_records": 1284,
  "records_with_cb_id": 942,
  "records_without_cb_id": 342,
  "lookback_days": 30,
  "start_date": "2026-04-07",
  "end_date": "2026-05-07",
  "daily_counts": [
    { "date": "2026-04-07", "count": 38 },
    { "date": "2026-04-08", "count": 41 }
  ]
}

What you can build with the ContactBased API

One data feed, many product surfaces. The ContactBased API powers sales intelligence platforms, ad-tech and audience products, enrichment and identity apps, and outbound sales tools. Custom contracts and wholesale licensing are available for unrestricted feed access.

Sales intelligence platforms

Add person-level intent and identity to your existing platform. Custom contracts, dedicated SLA, wholesale licensing for unrestricted feed access.

Ad tech and audience products

Generate hashed-email custom audiences for any topic. Push directly to LinkedIn, Meta, Google, or TikTok \u2014 or build your own audience product on top of the ContactBased intent data API.

Enrichment and identity apps

Resolve any cb_id to PII, emails, and phones. Single lookups or batch up to 1,000 contacts per call. Per-record provenance.

Outbound and sales tools

Add an intent layer to your sequencing product. Native integration via the search, export, and enrich endpoints.

Three calls. End to end. The ContactBased API workflow

Search a feed and auto-create a paginated export. Read its pages \u2014 stable forever, free to re-read. Enrich up to 1,000 contact_ids per batch. The whole intent + identity pipeline is three endpoints.

Step 1: POST /intent/feeds/search

Submit a feed_id and a lookback_days window. Returns total records, records with cb_id, daily counts, and an optional auto-created frozen export so you can paginate stable rows forever.

Step 2: POST /intent/feeds/exports/page

Read a stable page of rows from a frozen export. The same (export_id, page) returns the exact same rows every time. Row payloads include cb_id and hashes \u2014 PII when permissions allow.

Step 3: POST /enrich/contacts/batch

Batch enrich up to 1,000 contact_ids in a single call. Resolve any cb_id to PII, emails, and phones. Use the include parameter to fetch only the sections you need.

Four endpoint surfaces. That is the whole ContactBased API.

The ContactBased API is organized into four surfaces: intent feeds, feed exports, organization and filters, and enrichment. Every builder workflow uses some combination of these four.

Intent feeds

Define a feed in plain text \u2014 any topic, any keyword, any product or competitor name. No predefined taxonomy. Search it for in-market signal in a rolling window. Endpoints: POST /intent/feeds/builder, POST /intent/feeds/search.

Feed exports

Frozen, paginated exports. The same (export_id, page) returns the same rows forever. Endpoints: POST /intent/feeds/exports, POST /intent/feeds/exports/preview, POST /intent/feeds/exports/page, POST /intent/feeds/exports/list.

Organization and filters

What your org can see, the quotas it has, and which fields are filterable. Endpoints: GET /organization/feeds, GET /organization/credits, GET /organization/feed-limit, POST /intent/feeds/filters/fields, POST /intent/feeds/filters/values.

Enrichment

Resolve any cb_id to PII, emails, and phones. Single lookups or up to 1,000 in one batch. Endpoints: GET /enrich/contacts/{contact_id}, GET /enrich/contacts/{contact_id}/pii, GET /enrich/contacts/{contact_id}/emails, GET /enrich/contacts/{contact_id}/phones, POST /enrich/contacts/batch.

cb_id \u2014 one id that joins everything

cb_<16 hex> is the single stable token returned as cb_id on every export row and accepted as contact_id by every enrichment endpoint. No lookup tables, no email-as-key gymnastics, no joins by company-domain heuristics. Drop the cb_id straight into the enrichment URL \u2014 that is the join.

Permissions and quotas in the ContactBased API

GET /organization/feeds returns the flags and quotas your API key is bound to, per feed. Org-wide pools live at /organization/credits and /organization/feed-limit. No opaque tiers, no surprises at export time. Available fields include enable_export_pii, enable_export_business_info, lookback_days, export_row_limit, export_rows_used, and export_rows_remaining.

Frozen exports \u2014 quota burns once, pages read forever

When you create a ContactBased export, the matched rows are frozen at that moment. page_size and total_pages are locked for the life of the export, and re-reading any page is free. Use it for incremental syncs, retries, and rebuilding a derivative dataset on your side without re-running the search.

Compliance and sourcing

ContactBased uses first-party and open-web sources, supports standard B2B compliance frameworks, and provides per-record provenance on enriched contacts. Full data-handling, retention, and opt-out details are in the docs.

Frequently Asked Questions Summary

Common questions and answers about our contact-level advertising platform:

What's the rate limit?
Intent feed search and feed export endpoints have generous per-key rate limits. Batch enrichment is capped at 1,000 contacts per call with no daily ceiling on enrichment volume on paid plans.
Is the API really free-text, or do you have predefined topics?
Genuinely free-text. Search any string in plain language — a product name, a competitor, a use case, a regional or vertical keyword. The system handles topic matching on its own.
How is enrichment billed?
Per enriched contact. Batch enrichment counts each contact_id in the array as one enrichment. Re-enriching the same contact_id within a feed quota window is free.
Do exports expire?
No. Frozen exports are stable forever. The same (export_id, page) returns the same rows every time. Re-reads do not consume additional quota.
Can I get unrestricted feed access?
Yes — wholesale data and unrestricted feed contracts are available for sales intelligence platforms, ad tech vendors, and identity resolution apps integrating ContactBased into their own product. Annual contracts. Custom licensing. Contact us for terms.

Ready to ship intent + identity?

Get a ContactBased API key or talk to us about custom licensing for sales intelligence platforms, ad-tech vendors, and identity resolution apps. 30 billion daily intent signals, person-level rows, OpenAPI 0.1.0 spec.