DocumentationAPI Reference

Core

Leads

Once a search is completed, page through its extracted leads.

Everything this account owns, however it got here — from a search or from unlocking a row in the shared dataset. Reading your own leads is free; you paid for them once already.

For the leads one particular search produced, use GET /v1/searches/:id/leads instead — that one is scoped to a single search and lives in the Searches namespace.

GET/v1/leads

Query parameters

FieldTypeDescription
providerstring?Source maps to keep, comma-separated: google · apple · bing. Omit for all three.
limitnumber?Page size (1–500, default 100).
cursorstring?Opaque cursor from the previous response. Keyset paging — pass it back verbatim.

The response is { "leads": [ lead, ... ], "nextCursor": string | null }.

⚠️ Those three are the only parameters this endpoint takes. The richer filters on GET /v1/businessesq, country, category, minRating, hasPhone / hasWebsite / hasEmail, emailStatus — are not implemented here yet. Sending one returns 400 rather than quietly ignoring it, so you never get an unfiltered list back believing it was filtered.

GET/v1/leads/:id

One lead, same shape as the list. A lead belonging to someone else is 404, not 403 — a 403 would confirm the id is real.

GET/v1/leads/export

Everything you own as one file. Unlocked rows have no search behind them, so this is the only way to get those out in bulk. Free — you paid for these rows once already.

FieldTypeDescription
providerstring?Source maps to keep, comma-separated. Omit for all three.
formatcsv | xlsx | jsonOutput format (default csv).
leadIdsstring (repeatable)Optional. ?leadIds=a&leadIds=b to export only those.
GET/v1/leads/:id/pending-sync
POST/v1/leads/:id/sync

A lead is a copy taken at the moment you acquired it. When the shared record behind it changes, pending-sync says what is newer and sync pulls it in. Free — you are not buying the row again.

The lead object

The same shape everywhere a lead appears, including GET /v1/searches/:id/leads and the export files.

FieldTypeDescription
idstringLead id.
providerstringMap source the lead came from: google · bing · apple.
namestringBusiness name.
fullAddressstring | nullFormatted address.
streetstring | nullStreet.
municipalitystring | nullCity / municipality.
categoriesstring[]Business categories.
latitudenumber | nullLatitude.
longitudenumber | nullLongitude.
phonestring | nullPrimary phone number.
phonesstring[]All phone numbers.
websitestring | nullWebsite URL.
domainstring | nullWebsite domain.
emailsLeadEmail[]All discovered emails with BillionVerify status (enrichment, paid plans).
socialsRecord<string,string>Social profile URLs (enrichment).
technologiesWebsiteTechnology[]Website technology names, versions, and categories (enrichment).
ratingnumber | nullAverage review rating.
reviewCountnumber | nullNumber of reviews.
mapsUrlstring | nullListing URL on the source map.
placeIdstring | nullSource place id (Google Place ID, Bing ypid, Apple muid).

Field availability by provider

Every lead uses the same shape, but the source maps expose different fields — missing ones are null / empty. emails and socials are never from the map; they come from website enrichment on all providers.

FieldGoogleBingApple
name, address, coordinates, phone, website, categories, placeId, mapsUrl
street, municipality
rating, reviewCount
openingHoursby daysingle text
reviewUrl
featuredImage
priceLevel, claimed
emails, socialsenrichmentenrichmentenrichment
cURL
# Everything you own, Apple and Bing only
curl "https://api.mapleads.ai/v1/leads?provider=apple,bing&limit=100" \
  -H "Authorization: Bearer mapleads_xxx"

# Next page — pass nextCursor back verbatim
curl "https://api.mapleads.ai/v1/leads?cursor=CURSOR" \
  -H "Authorization: Bearer mapleads_xxx"