Skip to content
LeadityDocs

Scrapes

Estimate scrape

Quote an order for free: what is still new, the per-lead rate and the floors.

POSTapi.leadity.io/v1/scrapes/estimate
Scope readMCP tool estimate_scrape

Prices a scrape order without placing it and takes no credits. It answers how much of the selection is still unswept for each niche, an estimate of the leads it can yield, the exact per-lead rate (the price of any lead count is ceil(leads x leadRateMilli / 1000) credits), and the account's floors: an order needs at least minWorkItems new searches, at least minTargetLeads leads, and leads costing at least minOrderCredits. It also echoes the filters as the order would really run them: websitePresence none steps emailFinder down to off, and findOwnerBlockedBy names any niche that refuses the owner lookup. Call it before create_scrape and set maxCredits from it.

Headers

Authorizationstringrequired

Bearer, a space, then an API key: Bearer lk_api_... An MCP key is refused here with wrong_key_kind.

Content-Typestringrequired

application/json

Body parameters

nicheIdsstring[]required

One to ten niche ids from list_niches. The plan draws across them at random.

1 to 10 items, each 1 to 100 characters.

selectionobjectrequired

Where to search: whole regions, single ZIP or postal codes, or both. A code already swept for a niche is skipped for that niche.

Show child attributes
statesobject[]

Whole regions (a state, province, territory or UK region), every area in each. list_territories names them.

At most 200 items.

Show child attributes
countrystringrequired

The two-letter country code, e.g. US. list_territories names the countries on sale.

Matches ^[A-Z]{2}$.

statestringrequired

The region code as list_territories names it, e.g. TX.

1 to 8 characters.

zipsobject[]

Single ZIP or postal codes. list_areas and search_areas name them.

At most 60,000 items.

Show child attributes
countrystringrequired

The two-letter country code, e.g. US. list_territories names the countries on sale.

Matches ^[A-Z]{2}$.

statestring

The region the code sits in, when known.

1 to 8 characters.

codestringrequired

One ZIP or postal code exactly as list_areas names it, e.g. 78701.

1 to 16 characters.

filtersobjectrequired

The delivery filters, each independent of the others. app-api validates this object, so a bad value answers invalid_body. Today: websitePresence (required: any, has or none); phoneTypeFilter (off, with_phone, mobile, landline or voip); findOwner (true delivers only businesses with a confirmed owner name); emailFinder (off, require or require_verified, which deliver only businesses whose own site publishes an address, verified for the second; stepped down to off when websitePresence is none); nicheMatch (true delivers only businesses whose own Google main category is an ordered niche); minGoogleReviews (0 or one of the floors get_pricing lists); reviews ({ minReviews, maxReviews }: walk each business's Google reviews, charged per review). Absent fields are off. The full and current list, with prices, is on the filters page of the Leadity docs; get_scrape_defaults answers the account's own usual set.

Response

totalAreasintegerrequired

ZIP or postal codes the selection names.

newAreasintegerrequired

Codes still unswept for at least one niche.

coveredAreasintegerrequired

Codes already swept for every niche. Swept ground is never swept again.

inProgressAreasintegerrequired

Codes held by another live scrape of this account. They free up when it ends.

newWorkItemsintegerrequired

Searches the order would run: each niche times each code still new for it.

minWorkItemsintegerrequired

The fewest searches an order may run.

maxWorkItemsintegerrequired

The most searches one order may run.

minTargetLeadsintegerrequired

The smallest targetLeads this account may order.

minOrderCreditsintegerrequired

The least the leads of an order may cost, in credits.

nichesintegerrequired

How many niches were priced.

estimatedLeadsintegerrequired

A rough estimate of the leads the new searches can yield. Not a promise.

estimatedCreditsintegerrequired

What estimatedLeads would cost.

leadRateMilliintegerrequired

The price of one new lead in thousandths of a credit, at these filters and the dearest niche selected.

phoneTypeFilterstringrequired

The phone filter priced.

findOwnerbooleanrequired

Whether the owner lookup was priced.

websitePresencestringrequired

The website filter the order would run.

websiteLockedByobject[]required

Niches that forced a different website filter. Empty today.

Show child attributes
idstringrequired
namestringrequired
findOwnerBlockedByobject[]required

Niches that refuse the owner lookup. With findOwner on, an order naming any of them is refused.

Show child attributes
idstringrequired
namestringrequired
emailFinderstringrequired

The email filter the order would run, after the no-website step-down.

Errors

Every refusal answers { error, message } with the status below. The full list is on the Errors page.

CodeStatusMeaningExtra fields
unauthorized401The API key is missing, malformed, revoked or expired.-
wrong_key_kind401This key opens the other surface: an API key works on the HTTP API, an MCP key on the MCP server.-
account_suspended403The account is suspended.-
email_not_verified403The account's email address is not verified yet.-
invalid_body400The request does not match the operation's schema.issues: The problems found, each with path (the field as a dotted path, led by the part of the request it travels in: path, query or body, such as body.items.1) and message (what is wrong there).
rate_limited429Too many requests. Wait for the Retry-After seconds and try again.retryAfterSeconds: The seconds to wait, the same number as the Retry-After header.
try_again503Leadity could not answer just now. Retry in a moment, with the same Idempotency-Key on a spending call.retryAfterSeconds: When a request with this Idempotency-Key is still being processed: the seconds to wait before retrying with the same key, as the Retry-After header says.
internal_error500Something failed on our side. Nothing was charged twice.body: On the MCP server, when Leadity answered in a shape the tool does not publish: that answer as it came.