B2B Data Provider API: Enrich Companies Without a Seat
Choose between a B2B dataset, a seat and a per-call API, then enrich a list of companies from your agent, billed per call with no contract.

Enrich a list of companies from their domains without buying a seat or a dataset. Paste this into your agent:
Set up https://monid.ai/SKILL.md, and then use Monid to enrich brightdata.com with its headquarters and office locations, find the latest news about it, and give me one table with the fields and where each one came from.
One prompt enriches a company from its domain. 1 min setup · 12-24 hrs saved.
You need company data inside your own tool: headcount, location, funding, news, the record behind a domain. The usual offers are a seat on a sales platform or a bulk file you load yourself, and both are sized for a team, not for a program that asks about one company at a time. This guide sorts the three ways to buy B2B data, shows the per-call route with live responses from 2026-10-16, and lists what to watch for in the output. It runs through Monid, the OpenRouter for agent tools: one key, one balance, every tool priced per call.
What is the easiest way to get B2B company data through an API?
Monid. Install it once, add a key, and your agent calls a company data endpoint with a domain and gets a typed record back, with no seat, no contract and no file to load.
- Pay per call. Each lookup is billed on its own. A People Data Labs company enrichment is $0.10 per call and an Akta profile section is $0.025 (Verified 2026-10-16 on the company enrichment tools page). Buy calls as you need them: no monthly plan and no minimum top-up. Discovery and inspection are free; only a run bills.
- One install, every provider. The same key and the same balance call People Data Labs, Akta, Context.dev news and every other tool on Monid. When you also want the technology a company runs, it is another call on the same balance, as in the tech stack detection guide.
- Lives inside your agent. Install the CLI, add your key, run the prompt above, and the tool is there whenever your agent needs it, on demand, with nothing to keep running. Your agent reads
SKILL.mdand learns the rest, so setup is about a minute.
How do you enrich a list of companies without a data subscription?
Call an enrichment endpoint once per company and loop it over your list. The record you want depends on the provider, so the first step is a free search of the catalog by what you need, not by vendor name.
| Route | What you get | Cost shape | Fits |
|---|---|---|---|
| Seat on a sales platform | A web app, lists and capped exports | Annual contract per user | A team that works in the interface |
| Bulk dataset | A file of rows you load and keep | One purchase, then your own upkeep | Scanning a whole segment |
| Build it yourself | Whatever you collect | Your hours | A narrow fixed list |
| Monid per-call endpoints | One record per lookup, typed JSON, several providers under one key | Pay per call, buy flexibly | Lists of accounts, signup flows, agents |
Monid fits a list because the work is the same call repeated, and you pay for the companies you look up and nothing between runs.
For agents
Grab an API key at app.monid.ai, then paste this to your agent and hand it the key:
set up https://monid.ai/SKILL.md
It learns the whole discover, inspect, run workflow itself. More in the agent quickstart.
For humans
npm install -g @monid-ai/cli
monid keys add -k <your-api-key> -l main
Find the enrichment endpoints
monid discover -q "enrich a company from its website domain"
monid inspect -p pdl -e /v5/company/enrich
discover returns a ranked list of endpoints with provider and billing shape. inspect prints the input schema, the unit price and the typical run time. Neither bills.
Enrich from the domain
monid run -p pdl -e /v5/company/enrich -w -i '{"website": "brightdata.com"}'
The People Data Labs endpoint accepts a website, a name, a LinkedIn profile, a ticker or a pdl_id, and returns a one-to-one match with a likelihood score from 1 to 10. It also takes a min_likelihood input (default 2), which tells the provider to return nothing below your threshold.
Threshold, then write
A low-confidence match should go to a review queue, not into your database. A condition in whatever consumes the response is enough:
if record.get("likelihood", 0) < 6:
queue_for_review(record)
else:
upsert(record)
Give this to your agent![]()
Set up https://monid.ai/SKILL.md, and then use Monid to enrich these 50 company domains, drop any match with a likelihood below 6 into a review list, and give me the rest as CSV.Should you buy a B2B dataset or call an API?
Buy the dataset when you will read most of the rows, call the API when you will read a slice of them. The two contracts hand the same kind of record to you in different ways, and the difference is who holds the copy.
What changes when you hold the copy
You carry the refresh. A dataset is a snapshot that starts going out of date the day it lands, and updating it is your project. With an API the provider's database sits behind the call.
You pay for rows nobody opens. A dataset charges for all of its companies, and a go-to-market motion touches a small fraction of them in a year. A per-call API charges for the ones you looked up, which is the largest cost difference and has nothing to do with the price of a single record.
Only one of the two is callable at run time. An agent handed a company name can call an endpoint. It cannot query a file you have not yet indexed, matched and wrapped in a service. For anything that picks its own tools, that build is the real price of the dataset option.
Volume is a bad proxy for that decision. Coverage is the real variable: the share of the rows you will actually read. The two company providers on this page are compared on cost in PDL versus Akta for firmographics.
Can you build your own company database instead of buying one?
Yes, for a narrow list, and the free part is real: company registries, official filings and a company's own website are public. Pull a few hundred records into a spreadsheet and you have a database for the cost of an afternoon, and the business entity search guide covers the registry side.
The cost shows up past a few hundred. Matching a name to the right company across sources and keeping headcount and funding current is a standing job, and two companies with the same name go into your records silently if you do not catch it.
The Monid route is the choice for anything you will run more than once. The matching is done by the provider, the output is typed JSON instead of HTML you parse, and a lookup is $0.025 for an Akta section or $0.10 for a People Data Labs company record (Verified 2026-10-16). Free tiers on vendor sites are trial allowances, not a supply; a few hundred records a month is the range where per-call access with no plan fits better than an upgrade.
What does B2B company data look like, and what can you build with it?
B2B company data is a record per company plus a stream of events about it, and a per-call endpoint returns each as typed JSON. We ran two endpoints on 2026-10-16 against brightdata.com, so the fields below are what came back.
A company profile section from Akta
The Akta endpoint returns a profile in sections, and you pick the sections. Asking for location returned:
{ "data": {
"uuid": "00078hz",
"location": {
"hq": { "city": "San Francisco", "country": "USA", "region": "North America" },
"market_served": { "is_global": true },
"offices": [
{ "city": "Netanya", "country": "ISR",
"description": "Primary headquarters location in Israel",
"source": ["https://brightdata.com/"],
"type": { "code": "headquarters", "label": "Headquarters" } },
{ "city": "San Francisco", "country": "USA",
"type": { "code": "regional_hq", "label": "Regional Hq" } },
{ "city": "New York", "country": "USA",
"type": { "code": "general_office", "label": "General Office" } } ] } } }
(Shortened: each office also carries a street_address, and the full response held four offices.) Every office has a type code and a source URL, so you can see which page the provider read. The call billed one unit for $0.025, took about 1.4 seconds on the wall clock, and the endpoint's median run time is 2.3 seconds (Verified 2026-10-16).
A news stream from Context.dev
The news endpoint takes a company by domain, name, ticker or ISIN and returns articles. With limit set to 3 it returned three rows, each with an id, a story_id, a url, a title, a description, a published_at date, a type (editorial or press release), a source with name and domain, and a match object with the level and confidence of the company match. The three rows were one announcement from 2026-10-13: a partnership between DigitalOcean and Bright Data that brings Bright Data's tools and datasets to DigitalOcean's managed agents. The three articles billed $0.000253 each, $0.000759 in total (Verified 2026-10-16).
What you can build with it
- An account record that refreshes itself. Look up the domain when a lead arrives and write the profile fields into your CRM, with the likelihood check from above in front of the write.
- A trigger feed. Pull news for the accounts on your list each week and keep the new rows. A partnership, a funding round or a leadership change is a reason to write to someone.
- A fit score. Turn the fields into a number per account.
What goes wrong when you enrich companies at scale?
Four things show up when you read the output of more than one company. All four are from the 2026-10-16 runs or from the schemas monid inspect printed that day.
Why does the news come back three times?
Because one announcement is syndicated. Our three articles were a Yahoo Finance copy and two Business Wire copies of the same release, and they shared one story_id. If you count rows you count the announcement three times, so group by story_id before you count anything, and keep the editorial copy over the press release when you want independent reporting. The type field separates the two.
Why does a company name not work in every endpoint?
Because the identifiers differ by provider. The Akta endpoint accepts a website or a company uuid, and a bare company name is not accepted; you resolve the name through the Akta company search first. People Data Labs and Context.dev accept names, domains and tickers. Normalise your list to domains once and every endpoint accepts it.
Why is the match confidence worth reading?
Because enrichment does not fail loudly: a lookup returns a plausible record for the wrong company just as easily as for the right one. The Context.dev rows carried a match confidence of 0.7, 0.72 and 0.7, and the People Data Labs endpoint carries a likelihood score from 1 to 10. Threshold on those fields before you write anything.
Why does the bill depend on the shape of the call?
Because the endpoints bill differently. People Data Labs company enrichment bills per call. Akta bills per section and each section has its own price, so asking for all sixteen sections of a profile costs much more than asking for the two you use. Context.dev bills per article returned and charges nothing when no articles come back. Request the sections and the page size you need, not the maximum.
Which endpoint should I use for which job?
| Endpoint | What it does | Input | Billing | Price (Verified 2026-10-16) |
|---|---|---|---|---|
pdl/v5/company/enrich | Fills a company record, one-to-one match with a likelihood | Website, name, profile, ticker or ID | Per call | $0.10 |
akta/v1/company/enrichment | Company profile in sections you choose | Website or uuid, plus sections | Per section | $0.025 for location |
pdl/v5/person/enrich | Fills a person record, one-to-one match with a likelihood | Email, phone, name plus company, LinkedIn URL or ID | Per call | $0.28 |
pdl/v5/person/search | Finds people matching a structured query, up to 100 per request | Elasticsearch or SQL query | Per record | $0.28 |
context.dev/news/search | Articles about one company | Name, domain, ticker or ISIN | Per article | $0.000253 |
Prices Verified 2026-10-16 with monid inspect. Enrichment is per call because you already know who you mean. Search is per record because you ask the provider to decide how many people match, which is the most common way a prospecting budget runs away: a request for 100 records on pdl/v5/person/search is up to 100 billed units. Test with size set to 1 first.
When is another route a better fit?
You will read most of the rows. Analytics, market sizing, model training, anything that scans rather than looks up. If the question is how many software companies in Germany employ between fifty and two hundred people, an API is the wrong shape and no per-call convenience fixes it. Buy the file. People Data Labs and Bright Data both sell datasets.
Your query is not a lookup. Fuzzy matching across your whole customer base and graph work on company relationships need the data local.
You work in an interface all day. A sales team that needs lists, a dialer and a browser extension today is better served by a seat product than by an API and a developer. The API argument wins when the consumer is software. For a side-by-side of those products, see People Data Labs, Apollo and ZoomInfo alternatives.
And the disclosure: we resell these endpoints. The case we make best is the one where you enrich a slice rather than own a universe. If you will read the whole file, buy the file.
Conclusion
The quickest way to get B2B company data into an agent or a script is one call per company through Monid: $0.025 for an Akta profile section and $0.10 for a People Data Labs company record (Verified 2026-10-16), one key for these and every other tool, about a minute to set up and ready inside your agent whenever you need it.
Two things matter more than the choice of provider. Ask what share of the rows you will read: most of them means a dataset, a slice means an API. And read the confidence fields before you write, because an enrichment call returns a plausible record for the wrong company without complaint.
How we estimated the time saved: standing up a dataset you can query takes roughly 6 to 12 hours to load and index the files, 4 to 8 hours for a matcher and a lookup service your agent can call, and 2 to 4 hours for the first refresh cycle. That is 12 to 24 hours. The 1 minute is the install, key and first call once you already have a Monid key.
Free next step: run monid discover -q "enrich a company from its website domain" and monid inspect the top two results. Both are free, and you will see the exact fields and the current price before spending anything. Start at monid.ai.
FAQ
Are there any free B2B data providers?
There are free tiers and there is free public data, and they are different things. Company registries, official filings and a company's own website are free. Vendor free tiers are trial allowances, not a supply. If you need a few hundred records a month, per-call access through Monid with no plan and no minimum top-up fits that range, and discovery and inspection cost nothing.
What is a B2B data provider?
A B2B data provider is a company that maintains a database of businesses and the people in them and sells access to it. Access comes as a seat in a web app, as a bulk dataset you load yourself, or as an API that returns one record per lookup. The API shape is the one an agent can use directly.
How do I enrich a company from its domain?
Send the domain to an enrichment endpoint and read the record back. With Monid that is monid run -p pdl -e /v5/company/enrich -w -i '{"website": "brightdata.com"}', billed per call. Check the likelihood score before you write the record anywhere.
Which B2B data providers are available through a per-call API?
On Monid we ran People Data Labs for company and person records, Akta for sectioned company profiles and Context.dev for company news. Each is billed per call, per section or per result, and all sit behind one key and one balance.
Why do I get three copies of the same news story?
Because one announcement is syndicated to several outlets. Our 2026-10-16 run returned a Yahoo Finance copy and two Business Wire copies of one release, all with the same story_id. Group by story_id before you count.
Published August 2026.


