A business leads database built fresh on every query

Pulled live from Google Maps and LinkedIn, billed only on results.

Free to try, no card Charged only on results scrapedAt stamp on every record
THE PROBLEM WITH FILES

Why do lead files go stale?

Businesses close. Phones get reassigned. Owners sell. People change jobs. A compiled file has no way to flag which rows died after it was built, so you find out the slow way, when calls bounce and mail comes back.

A query does not have that problem. When your list is built at request time, every record shows what the public page says right now, and each one carries a scrapedAt timestamp so you can check the claim yourself.

There is no warehouse of pre-collected rows going stale behind this API. There are 12 live Google search types and a set of LinkedIn public endpoints, and your database is whatever you pull from them, whenever you pull it.

PULLED LIVE FROM THE API, AUGUST 4, 2026

What data do you get?

This is a real query and a real record from it, run the day this page was last refreshed. Maps responses come back in about a second, and you set how many businesses you want with the limit parameter.

# the Maps rate per business returned; zero results cost nothing curl "https://crustapi.com/v1/search?type=maps&q=HVAC%20contractors%20in%20Phoenix,%20AZ&limit=3" \ -H "x-api-key: YOUR_KEY"

The same record, as a CSV row you can drop straight into a spreadsheet:

# CSV view title,address,phone,website,categoryName,totalScore,reviewsCount,scrapedAt Parker & Sons,"3636 E Anne St A, Phoenix, AZ 85040",(602) 4**-**19,https://www.parkerandsons.com/?utm_campaign=gmb_pk-phx_home_cus-all_googlebusinessprofile&utm_medium=gmb&utm_source=google,HVAC contractor,4.7,34660,2026-08-04T07:53:28.643Z # 2 more rows omitted, same columns

The same record as JSON, trimmed to the highlights:

// JSON view { "query": "HVAC contractors in Phoenix, AZ", "count": 3, "tookMs": 618, "places": [ { "title": "Parker & Sons", "placeId": "ChIJh9Zo0KoPK4cRzTwhKAxIE8s", "address": "3636 E Anne St A, Phoenix, AZ 85040", "phone": "(602) 4**-**19", "website": "https://www.parkerandsons.com/?utm_campaign=gmb_pk-phx_home_cus-all_googlebusinessprofile&utm_medium=gmb&utm_source=google", "categoryName": "HVAC contractor", "categories": ["HVAC contractor", "Air conditioning contractor", ...], "totalScore": 4.7, "reviewsCount": 34660, "openingHours": { "Monday": "Open 24 hours", ... }, "scrapedAt": "2026-08-04T07:53:28.643Z" } // 3 businesses cost $0.00588 at standard Maps prices ] }

The phone is masked for this page. The API returns the full number, the full address, website, rating, review count, categories, lat and lng, and hours for every day.

THREE STEPS

How do you build a list?

No code needed. From zero to a lead list in about two minutes:

  1. 1

    Create a free account. Try it free, no card needed.

  2. 2

    Type a search in the playground. Something like HVAC contractors in Phoenix. The businesses land in a table.

  3. 3

    Click export. Download the CSV and open it in Sheets or Excel. Done.

Developers: skip the playground. Copy your key from the dashboard and run the curl above. Same data, as JSON.

PEOPLE, TOO

How do you get email addresses?

A straight answer first: business records from Maps carry phone, website, address, rating, review count, categories, and hours. They do not carry email addresses, because Maps listings do not show one.

Emails come from the people side. LinkedIn people search (beta) finds public profiles by title, company, or keyword, and each person row can carry a verified work email.

An address is returned only after it passes a live verification check. When nothing passes, the field is null instead of a guess, and empty rows cost nothing.

# find the people behind the businesses (people search, beta) curl "https://crustapi.com/v1/linkedin?type=search&keywords=owner hvac phoenix" \ -H "x-api-key: YOUR_KEY" // each person row carries: // name, headline, currentTitle, currentCompany, location, // profileUrl, email (verified or null), emailStatus

The same endpoint family also returns full profiles, company pages, jobs, and public posts. The LinkedIn people search API (beta) page shows a full masked response, and the LinkedIn company scraper covers the company side.

THE BILLING MECHANISM

You pay for records, never for tries

A compiled leads file charges you for every row, dead or alive. CrustAPI charges one charge per record returned. Empty and failed queries are free.

A compiled leads fileCrustAPI
When records are collectedMonths before you buy, on the vendor's scheduleThe second you run the query
What you pay forEvery row in the file, dead or aliveone charge per record returned; empty and failed queries free
Proof of freshnessNone; the file is a snapshotscrapedAt timestamp on every record
Refreshing the listBuy the file againRun the query again; paid funds never expire between runs
EmailsVaries by vendorVerified emails on LinkedIn people results; null when the check fails
PRICING

How much does a leads database cost?

You pay the Maps rate for each business record a query returns. A query that returns nothing costs nothing. Here is what real lists cost:

DepositGoogle Search / 1,000 requestsMaps / 1,000 businessesLinkedIn reads / 1,000 requestsPeople, Jobs, Refresh / 1,000 units
$10+$1.00$1.96$6.00$1.96
$149+$0.76$1.49$4.50$1.49
$549+$0.56$1.10$3.30$1.10
$1,999+$0.41$0.80$2.45$0.80
$6,500+$0.33$0.65$1.95$0.65
$27,500+$0.28$0.55$1.65$0.55
$50,000+$0.26$0.50$1.50$0.50
$100,000+$0.20$0.40$1.50$0.40

Every eligible account gets $6 of free usage monthly. Each deposit keeps its prices until spent; paid funds never expire. People and Jobs bill per successful search, Refresh per accessible profile. Full profiles in People use the read rate per full profile. See all billing details.

Larger deposits unlock lower endpoint prices. Each deposit keeps its prices until spent. See the full deposit table on the pricing page. Prices in USD, ex-tax.

Google Search starts at $1.00 per 1,000 successful requests, Maps at $1.96 per 1,000 businesses, LinkedIn reads at $6.00 per 1,000 successful requests, and People, Jobs and Refresh at $1.96 per 1,000 billing units. Full profiles in People use the LinkedIn read rate per full profile. Each deposit saves its own prices until spent. Every eligible account gets $6 of free usage monthly; paid funds never expire.

WHO IT'S FOR

Who uses this?

Build your first list free
Try it free. No card, no contract.
Try for free

Related: B2B database · Lead scraper · Google Maps scraper API · Google Reviews API

FAIR PLAY

When a compiled database is the better pick: you need millions of records this afternoon in one flat file, or you want firmographic depth like revenue bands and org charts that the big vendors compile over years. Those products are good at bulk and depth. This one is good at fresh and exact.

BEFORE YOU ASK

Common questions

It depends which records you pull. Business records from Google Maps carry phone, website, address, rating, review count, categories, and hours, and never an email, because Maps listings do not show one. Verified emails come on people results from the LinkedIn endpoints, where an address is returned only after it passes a live verification check. When nothing passes, the field is null instead of a guess.

As fresh as the moment you ask. Records are pulled from the live public page at query time, and each one carries a scrapedAt timestamp so you can verify it. There is no warehouse of pre-collected rows aging behind the API.

Maps costs $1.96 per 1,000 businesses at standard prices, down to $0.40 for the largest deposit. Empty and failed searches are free. Every eligible account gets $6 of free usage monthly. Paid funds never expire.

Logged-out, public-only collection has repeatedly defeated computer-fraud and contract claims. Everything CrustAPI reads is visible to a signed-out visitor. Nothing comes from logged-in accounts or private data.

Maps costs $1.96 per 1,000 businesses at standard prices, down to $0.40 for the largest deposit. Empty and failed searches are free. Every eligible account gets $6 of free usage monthly. Paid funds never expire.

Yes. The playground at /app runs every endpoint from a form and shows results in a table you can export. The API also plugs into Clay, n8n, LangChain, CrewAI, and MCP clients, so workflows and agents can build lists on their own.

WORKS WITH YOUR STACK

Check the timestamps yourself

Run one query on the free tier and look at the scrapedAt field on every record that comes back. That is the whole pitch.

Try for free
No credit card required