A business leads database built fresh on every query

Every business leads database sold as a file starts aging the day it is built. CrustAPI pulls each record live from Google Maps and LinkedIn public pages when you ask, and bills you only when a query returns results.

3,000 free / month, no card Charged only on results scrapedAt stamp on every record
THE PROBLEM WITH FILES

Leads rot. A file cannot tell you which ones.

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, JULY 17, 2026

One request, records with a timestamp

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

# 1 credit 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/,HVAC contractor,4.7,34328,2026-07-17T09:58:48.642Z # 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": 1447, "places": [ { "title": "Parker & Sons", "placeId": "ChIJh9Zo0KoPK4cRzTwhKAxIE8s", "address": "3636 E Anne St A, Phoenix, AZ 85040", "phone": "(602) 4**-**19", "website": "https://www.parkerandsons.com/", "categoryName": "HVAC contractor", "categories": ["HVAC contractor", "Air conditioning contractor", ...], "totalScore": 4.7, "reviewsCount": 34328, "openingHours": { "Monday": "Open 24 hours", ... }, "scrapedAt": "2026-07-17T09:58:48.642Z" } // 2 more records, 3 credits total ] }

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.

PEOPLE, TOO

Add the decision makers, with verified emails

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. We will not pretend otherwise.

Emails on CrustAPI come from the people side. The LinkedIn endpoints search 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 rows that return nothing cost nothing.

# find the people behind the businesses 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 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, including the dead ones. CrustAPI charges 1 credit per record actually returned. A query that returns nothing is free. A query that fails is free. That puts the risk of bad data on us instead of you.

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 alive1 credit 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; credits never expire between runs
EmailsVaries by vendorVerified emails on LinkedIn people results; null when the check fails
PRICING

One credit per record

Prepaid packs, and credits never expire: 25k for $49 · 100k for $149 · 500k for $549 · 2.5M for $1,999, all self-serve, ex-tax. That works out to about $2 per 1,000 records at entry and under $1 per 1,000 on the big packs. Before any of that, the free tier gives you 3,000 credits a month with no card, which covers a real list.

Build your first list free
3,000 credits a month. No card, no contract.
Get started →

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 on your desk this afternoon in one flat file, your team's workflow is built around a vendor's export tools and filters, or you want firmographic depth like revenue bands and org charts that the big data 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

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.

Get 3,000 free credits
No credit card required