A record is one person or one company that the API hands back to you. That is the unit most B2B data APIs meter, and it is the number you should size before you pull anything.
Key takeaways
- A record is a returned row, not a request. One search that returns 25 people is 25 records.
- Vendors differ on what they bill for: a profile returned, a successful match, or a single field such as a phone number.
- Sizing calls can be free. LeadOcean's count and filter-listing calls spend no records.
- LeadOcean has two plans, Free (1,000 records, one-off) and Pro ($499 a month, flat). Pro has no per-record price.
What it is
A record is one person or one company returned by a data API, and it is the unit the API counts against your allowance.
A record is not an API call. Calls are what you send. Records are what come back. A single request can return one record or a hundred, and the second costs a hundred times more on a metered plan.
A record is also not a field. Some vendors meter individual data points, such as a phone number, on top of the profile. We cover that split in the table below.
How it works
Metering follows the data that leaves the API. Each step below shows where a record gets counted.
- You send a request. A search, an enrichment, a lookup or an export. Sending it is not what costs you.
- The API finds matches. Zero, one or many people or companies fit your filters or your identifier.
- Matches come back. Each person or company returned counts as one record. LeadOcean states it this way: every person or company returned counts one record.
- Misses are handled by endpoint. A person LeadOcean holds nothing for returns a 404 and costs nothing on
POST /v1/people/enrich. The v2 contact endpoints charge one record per call, including a call that finds nothing. - Sizing calls are free. You can ask how many people match a filter without pulling any of them.
A worked example
Say you sell to a fictional company, Acme, and want VPs of Sales in Canada. You size the audience first, then decide how much to pull.
On 2026-09-30, LeadOcean counted 5,066 mailable people for jobLevel VP, jobFunction Sales & Business Development, country CA. That count uses the default email filter: verified, catch_all_valid and catch_all.
Pulling a first page of 25 people costs 25 records. Pulling the whole list costs 5,066 records. Enriching one of them again by person_id is one more record.
Record vs credit
A record is a returned person or company. A credit is a vendor's own unit, and it can mean something different on each site.
| LeadOcean record | Apollo credit | People Data Labs credit | Hunter credit | |
|---|---|---|---|---|
| What is metered | Each person or company returned | Per data point: an email, a phone number, an organization | Per successful match or profile returned | Per email found; 0.5 credit per verification |
| Part of the record | 1 credit | Part of the profile | 1 credit per email found | |
| Phone | Part of the record | 8 credits | Part of the profile | Not covered in the cited source |
| A miss | 404 on enrich costs nothing. v2 contact call costs 1 | Not stated in the cited source | 404 is not billed | No credit if nothing is found |
| Plan price | Free or Pro at $499 a month | Subscription plus credits | Subscription plus credits | Subscription plus credits |
Sources, September 2026: Apollo API pricing, People Data Labs docs, Hunter help center.
Read the unit before you read the price. A plan with 10,000 credits is not 10,000 records if a phone number takes eight of them. Convert every plan to cost per useful record before you compare.
The practical difference is predictability. Per-field credits make a phone-heavy pull cost much more than an email-only pull. A per-record unit costs the same whichever fields you read.
LeadOcean on Pro goes one step further. There is no per-record price and no overage invoice. Records still count, because a very large month is paced down past the fair-usage line.
When it matters
The definition looks small. It changes your budget in four situations. It also matters more when an AI agent is the one calling the API, because an agent can page and retry without anyone watching the meter.
Sizing a campaign
Count the audience before you search. A count that returns 5,066 tells you the cost of the full list, in records, before you spend one. On the Free plan that decides whether the list fits inside 1,000 records.
Paging through search results
Every page you fetch returns records. A search page holds up to 100 people, so five pages is up to 500 records. Stop paging when you have enough, not when the cursor runs out.
Re-enriching the same person
Each call that returns a person counts again. Retries count too. If you enrich the same person_id twice, you spend two records. Store the result and read from your own table next time.
Exports
An export counts one record per row. POST /v1/exports takes up to 50,000 rows per request, so a full request is up to 50,000 records. The Exports page in the app shows the record price before you start.
How LeadOcean handles it
LeadOcean counts a record whenever a person or company is returned, and it lets you size any filter first for free. These calls spend no records: count_leads, list_filters, list_enum_values, get_account, get_export, list_exports, and a search with count=true and limit=1.
On the REST API, send count=true as a query parameter with limit set to 1. The body stays a flat JSON filter. meta.total comes back capped at 100,000, and data is empty.
curl -X POST "https://api.leadocean.io/v1/people/search?count=true" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"jobLevel": ["VP"],
"jobFunction": ["Sales & Business Development"],
"country": ["CA"],
"limit": 1
}'Read meta.total and meta.countOnly. If countOnly is true, nothing was pulled and nothing was spent. Filter values are exact strings, so check list_enum_values for the spelling.
On the MCP server at https://api.leadocean.io/mcp, the same split holds. search_leads costs 1 record per person returned. get_lead, find_phone and get_company cost 1 record each. export_leads costs 1 record per row. A get_lead that finds nobody costs nothing.
The app at app.leadocean.io has an Exports page with a filter builder, a column picker and the record price before you download the CSV. It is not a rep workspace. For plan details, see pricing.
FAQ
Is a record the same as a lead?
No. A record is a metering unit: one person or company returned. A lead is a record you have decided to work. You can pay for a thousand records and qualify a few hundred leads.
Does a search that returns nothing cost a record?
No records come back, so none are counted. The exception is the v2 contact endpoints. Those cost one record per call, including a call that finds nothing.
Does reading an email or a phone cost extra?
On LeadOcean, no. Contact data is part of the record. Revealing an email with reveal_email costs no extra record. Phone lookups through GET /v2/people/phone cost one record per call.
What happens when I run out on the Free plan?
Free gives 1,000 records, one-off, not monthly. Count first, pull a sample, and check the result before you spend the rest. Pro at $499 a month removes the per-record price.
Where can I compare how other APIs count?
Read our guides to what a B2B data API is, the best B2B data providers with an API and the best B2B data APIs.
Size your audience for free, then pull only what you need
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →