Article

Intent data providers with an API or data feed, not just a dashboard

A dashboard shows intent to a person; a pipeline needs records. What six providers document about API and feed access, a checklist for a sample, and one week of scores loaded.

11 min read

A dashboard shows intent to a person. A warehouse, a scoring model or a product needs it as records. So the question to put to intent data providers is whether the scores reach you through an API or a data feed, and not just through a dashboard, and whether what arrives can be keyed, joined, versioned and reloaded. This post sets out seven properties to ask for, reports what six providers document about access in their own words, gives a checklist to run on a sample, and works through the load of one week of scores.

The choice between the routes is a subject of its own, and the comparison of API and bulk files for company data assigns each job to one or the other. This post stays with the record: what an intent row has to carry before either route is worth building on.

What a data team needs from intent data delivered as data

Intent data reaches a revenue team as a ranked list. It reaches a data team as rows, and seven properties of those rows decide whether a pipeline, a model or a product can stand on them. Each one is a question for the provider and a test on a sample.

PropertyThe question to askWhat it protects
Grain of a recordWhat does one row describe: a company, a topic and a period, or something else?The upsert key, and every count taken from the table
Stable identifiersWhich company key never changes, and which domain and security identifiers travel with it?Joins to accounts and holdings that do not depend on names
Evidence fieldsWhich dated observations stand behind a score, and do they arrive with it?Review by a person or a model reviewer, and features of your own
Versioned scoringIs the scoring version on the row, and how is a change released?Models and reports built on the earlier meaning
History written onceIs a closed period ever rewritten, and how is a late period marked?Back-tests, and any comparison of this week with last
Incremental readsCan a client ask for what is new since its last read, in order, and resume?A daily run that costs the day's rows and not the whole table
Bulk filesCan a whole period be taken as files, with a statement of what they hold?First loads, reloads and a record of what was delivered

The grain comes first. A score for one company and one topic over one week is a different object from a score for an account in one customer's segment, or from a stream of single observations, and each needs its own key.

Identifiers set the cost of the join: a stable company identifier keys your own tables, a domain reaches a CRM and security identifiers reach a portfolio, as the identifiers that make company data joinable sets out.

Evidence, versions and a history written once belong together. A score with nothing behind it can only be trusted or ignored. A formula that changes under the same name moves every model trained on it, and a week rewritten after the fact is no longer point-in-time data.

The last two properties are the routes. An incremental read needs an order and a bookmark, which cursor pagination over a feed that runs oldest first provides, and a bulk file needs a manifest to be checked against.

Which intent data providers offer an API or a data feed, not just a dashboard?

Several intent data providers document access beyond a dashboard. Bombora states that Company Surge data can be delivered to a data lake or a CDP as a flat file or through an API. 6sense documents APIs and bulk Data Packs. Informa TechTarget describes delivery into CRM, ABM platforms and cloud warehouses. Fokals delivers by REST API and bulk exports.

The order below is alphabetical. The reference of an API, the layout of a file and the terms of access are each provider's to confirm, so ask for them with a sample.

A list of B2B intent data providers and the API access each documents

This list holds the B2B intent data providers whose own pages we read on 7 October 2026: 6sense, Bombora, Demandbase, Fokals, G2 and Informa TechTarget. Each entry states the access that provider documents, whether an API, files, a data share or an integration, and links the page, so you can check the wording yourself.

ProviderProduct namedAccess its own pages describe
6sense6sense APIs and Data PacksAPIs that answer in JSON under an API token, with a company intent score and buying stage among the responses, and Data Packs as bulk extracts by SFTP, Amazon S3 or Snowflake
BomboraCompany Surge and the Intent APIDelivery direct to a data lake or CDP as a flat file or through an API, integrations with go-to-market tools, and a developer portal whose Intent API returns intent data page by page
DemandbasePoweredBy Demandbase and the Intent APIAccount identification, firmographic, technographic, contact and intent data through APIs, real-time enrichment, batch delivery and flat files, with developer documentation, and an Intent API for company-level intent signals that its documentation marks as beta
FokalsIntent Scores and Company SignalsA REST API with cursor pagination and feeds that run oldest first, and bulk exports as JSON, JSON Lines or CSV with a manifest
G2G2 Buyer IntentBuyer Intent data on a vendor's own product, with CSV exports and integrations, datasets available through the G2 API, and Snowflake Private Listings with new data delivered daily
Informa TechTargetBuyer IntelligenceSignals delivered into a MAP, an ABM platform and a CRM, data landed in a cloud warehouse, an MCP server for agents, and named integrations

The routes differ in kind, and where a score is used decides which one you need: a share suits a team that works inside that platform, an integration suits a field on an account in a CRM, and an API or a file suits a table you own.

Bombora, 6sense and TechTarget: what each intent data provider documents about its API and data feed

Bombora states that Company Surge data can be delivered to a data lake or CDP as a flat file or through an API. 6sense documents APIs that return scores as JSON, and Data Packs delivered as files. Informa TechTarget describes signals delivered into a CRM, an ABM platform and cloud warehouses, and a 2024 TechTarget announcement introduced Account Intent Feeds.

Bombora. The integrations page gives two routes for Company Surge Intent data that end in your own storage: a flat file or an API, delivered direct to a data lake or a CDP. The same page describes Bombora as a data company and not a platform. Bombora's developer portal documents an Intent API that returns intent data page by page under an OAuth 2.0 bearer token. We found no file layout on these two pages, so ask for it with the sample.

6sense. The API documentation describes several APIs that answer in JSON under an API token and a rate limit by the minute. A Company Identification API takes an IP address, matches it to an account and returns firmographics, segments and score data. A Lead Scoring API takes an email address and returns predictive scores, among them a company intent score and a company buying stage. For bulk, Data Packs are structured extracts delivered by SFTP, Amazon S3 or Snowflake, on a daily, weekly, monthly or quarterly schedule that depends on the pack. The packs listed include Predictive and Keyword Intent, and the documentation says a predictive file holds only what changed since the previous day.

Informa TechTarget. The buyer intelligence page describes signals delivered into a MAP (a marketing automation platform), an ABM platform and a CRM, data landed in a warehouse on AWS, Azure, Google Cloud and Snowflake, and an MCP server for agents. The integrations page lists 6sense, Demandbase, Outreach and Salesloft, and beside them Marketo, Eloqua, Pardot, HubSpot, Salesforce and Microsoft Dynamics 365. A TechTarget announcement of 10 April 2024 introduced Priority Engine Account Intent Feeds as a weekly stream of account data delivered directly into a CRM, with account intent scores that adjust every week. We found no public API reference on these pages.

How Fokals delivers intent data through its API and bulk exports

Fokals delivers a weekly intent score for each company and topic, with the dated evidence behind it. The data is delivered direct, by REST API and as bulk exports, with a signed-in dashboard for browsing. Set against the seven properties, this is what arrives.

PropertyWhat Fokals delivers
Grain of a recordIntent Scores holds one row for each company, topic and closed week, Monday to Sunday in UTC, for every topic that scores at least 5 on a scale of 0 to 100. Company Signals holds one row for each dated signal
Stable identifiersOne stable company ID on every row. A listed company carries its ticker, MIC, ISIN, LEI and share-class FIGI, and a brand or subsidiary carries those of its listed parent
Evidence fieldsEach score arrives with the dated evidence behind it, on the row. Company Signals delivers every signal with its observation time and topics
Versioned scoringThe intent version travels on every row. A breaking change ships as a new version with at least 90 days' notice
History written onceEach week is written once, after it closes, and is never revised. A period written late carries a flag
Incremental readsThe signals feed runs oldest first from a time you set, so the last cursor is the bookmark for incremental sync. Rate limits apply per key, by the minute and by the day
Bulk filesExports of any dataset for any period as JSON, JSON Lines or CSV: page by page, up to 1,000 rows a page, or as a package of files with a manifest naming the period, the versions and the licence

The data dictionary defines every field named here, the methodology describes each dataset, and the API reference lists the endpoints.

A checklist to test an intent data feed on a sample

Ask each provider for a sample on the companies you track, with its data dictionary, and run the same eight tests on every sample.

  1. Prove the grain. Count rows and distinct keys. They are equal when the grain is as stated.
  2. Join on identifiers. Match the sample to your accounts on a domain or a security identifier, and report the share matched. Record how many rows needed a match by name.
  3. Open the evidence. For twenty scores, list what stands behind each one, with its dates. Note whether the evidence arrives on the row or has to be requested.
  4. Find the version. Look for the scoring version on the row. Ask for the release policy in writing: the notice given, and whether old and new run side by side.
  5. Pull a closed period twice. Keep one load, take the same period again some weeks later and compare row by row, with the query in why we write each table once.
  6. Run the incremental step twice. The second run should add nothing. Then stop a run halfway and resume from the saved position: no row lost, none doubled.
  7. Reconcile a file. Check a bulk file against its manifest or covering note: the period, the row count, the version. Load it twice and compare the tables.
  8. Measure the lag. For each record, take the time it reached you less the time it was observed, and read the slowest tenth, not the median.

The eight tests sit inside a wider review of sourcing, coverage and licence, which ten questions for a company data vendor covers.

A worked example: loading one week of intent scores

Acme Robotics is an invented company and every figure below is illustrative. Its data team loads one closed week of Intent Scores from Fokals into a warehouse table, and checks the load before anyone ranks an account on it.

Assumptions:

  • Acme licenses Intent Scores and tracks a list of 4,000 companies. An export returns the whole dataset for the period, so Acme pages through it and keeps the rows of its list.
  • In the week loaded, a company on the list has rows for 6 topics on average. A topic has a row when it scores at least 5.
  • Acme asks for JSON Lines at 1,000 rows a page, the largest page an export returns.
  • The week runs from Monday 5 October to Sunday 11 October 2026, and the load runs after the week has closed.

The working:

  1. Rows to expect. 4,000 companies at 6 rows each is 24,000 rows.
  2. Requests. The export is paged over every company's rows, so the requests follow the rows returned, not the list: each 24,000 rows at 1,000 a page is 24 pages, so 24 requests. At the default page of 500 rows it would be 48.
  3. A longer period. Twelve weeks of the same size is 12 times 24,000, or 288,000 rows to keep, with twelve times the requests. Set the request count against the minute and day limits of the key before the job runs.

The first page is one request. The host is a placeholder.

curl --silent --show-error --fail \
  --header "Authorization: Bearer $FOKALS_API_KEY" \
  --dump-header headers.txt \
  "https://$FOKALS_HOST/api/v1/exports/intent/company_intent_weekly?from=2026-10-05&to=2026-10-11&format=jsonl&limit=1000"

The cursor for the next page arrives in the X-Next-Cursor response header: send it back with the next request and stop when the header is absent. The export is ordered by week, company and topic, so a run that stops resumes from the last cursor it stored.

Acme loads the rows of its list into a table keyed on the company ID, the topic and the week's Monday, keeps the intent version as a column, and runs one query over the week.

-- Postgres, with evidence loaded as jsonb
select
  count(*)                                                 as loaded_rows,
  count(distinct (company_id, topic, week_start))          as distinct_keys,
  count(distinct intent_version)                           as versions,
  count(*) filter (where score < 5 or score > 100)         as out_of_range,
  count(*) filter (where jsonb_array_length(evidence) = 0) as no_evidence,
  count(*) filter (where reconstructed)                    as late_rows
from company_intent_weekly
where week_start = date '2026-10-05';
ResultExpectedWhat it shows
Loaded rows and distinct keys24,000 and 24,000One row for each company, topic and week
Versions1The intent version travels on every row
Scores out of range0A score runs from 0 to 100, and a row is written from 5 upwards
Rows with no evidence0Every score arrives with the evidence behind it
Late rowsA count to recordA flagged row was written after its normal schedule

Two results stop the load. More rows than keys means a page was stored twice or the key is wrong. A row count far from 24,000 means a page was missed or an assumption was wrong. If a load ever holds two versions, add the version to the key before anything is ranked.

Acme keeps the rows it loaded beside the query's result. A fortnight later it exports the same week again and compares the two loads: a week written once returns the same 24,000 rows. The daily read of Company Signals from a bookmark comes next, and the guide to incremental sync builds it.

Frequently asked questions

Which intent data providers have an API?

Among the providers whose own pages were read on 7 October 2026, Bombora states that Company Surge data can be delivered by flat file or through an API and publishes an Intent API reference, 6sense publishes API documentation whose responses include a company intent score and a buying stage, Demandbase names intent data among the data PoweredBy Demandbase delivers through APIs, and G2 documents Buyer Intent datasets available through the G2 API. Fokals delivers Intent Scores and Company Signals by REST API.

What is the difference between an intent data API and an intent data feed?

An API answers a request: you ask for a company, a topic or a page of records and receive the answer, usually as JSON. A feed delivers records in order as they are produced, either as an endpoint a client reads forward from a bookmark or as files sent on a schedule. A look-up inside a product needs the first, and a warehouse copy that stays current needs the second.

Can intent data be loaded into a data warehouse?

Yes, when the provider delivers records. The documented routes differ: 6sense lists SFTP, Amazon S3 and Snowflake for its Data Packs, and G2 shares Buyer Intent data through Snowflake Private Listings. Fokals data is delivered direct by REST API and as bulk files, which you load with the warehouse's own loader. Whichever route you take, key the table on the stated grain and keep the scoring version on every row.

What fields should an intent data record carry?

A record should carry a stable company key, the topic, the period the score covers, the score, the version of the scoring that produced it and the time it was written. It should also carry, or point to, the dated observations behind the score. With those fields a row can be keyed, joined to accounts or holdings, explained to the person who acts on it and compared with a later load.

How often is intent data delivered through a feed?

It depends on the provider and the product. 6sense documents Data Packs delivered daily, weekly, monthly or quarterly, depending on the pack. G2 documents new data delivered daily to a Snowflake listing. A TechTarget announcement of 10 April 2024 described a weekly stream of account data. Fokals writes Intent Scores weekly, after each week closes, and delivers Company Signals daily.

How does Fokals deliver intent data?

Direct, by REST API and as bulk exports. Intent Scores holds a weekly score from 0 to 100 for each company and topic, with a surge flag and the dated evidence behind it, and Company Signals holds every dated signal. The signals feed runs oldest first from a time you set, and exports cover any period as JSON, JSON Lines or CSV, page by page or as a package of files with a manifest. Sample data for the companies you name is sent on request, with the data dictionary and the methodology.

The queries and code on this page are examples to adapt. Test them in your own environment before you rely on them.

What this page says about the products it names was checked against their public documentation on 7 October 2026. Product and company names are trademarks of their owners. Fokals is not affiliated with them or endorsed by them.