Explainer

What Counts as a Record in a Data API?

A record is the unit a data API meters. Here is what counts, what does not, and how to size a pull before you spend anything.

Get your free API key →Free to start. No credit card. 1,000 records to spend whenever you like.

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.

  1. You send a request. A search, an enrichment, a lookup or an export. Sending it is not what costs you.
  2. The API finds matches. Zero, one or many people or companies fit your filters or your identifier.
  3. 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.
  4. 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.
  5. 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 recordApollo creditPeople Data Labs creditHunter credit
What is meteredEach person or company returnedPer data point: an email, a phone number, an organizationPer successful match or profile returnedPer email found; 0.5 credit per verification
EmailPart of the record1 creditPart of the profile1 credit per email found
PhonePart of the record8 creditsPart of the profileNot covered in the cited source
A miss404 on enrich costs nothing. v2 contact call costs 1Not stated in the cited source404 is not billedNo credit if nothing is found
Plan priceFree or Pro at $499 a monthSubscription plus creditsSubscription plus creditsSubscription 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.

bash
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 →