Lead scraper for Google Maps and LinkedIn

Business leads from Google Maps, people from LinkedIn, one URL.

Free to try, no card Charged only when results come back Maps answers in ~1 second
PULLED LIVE FROM THE API, AUGUST 4, 2026

Business leads from Google Maps

One request, one city, one trade. This run, captured August 4, 2026, returned 5 roofers in about a second. Here is the request and two of the rows. Phones are masked on this page; the API returns them in full.

# each business returned costs one request charge; zero results cost nothing curl "https://crustapi.com/v1/search?type=maps&q=roofing%20contractors%20in%20Phoenix,%20AZ&limit=5" \ -H "x-api-key: YOUR_KEY"

Two of the rows as CSV, ready to paste into a spreadsheet:

# CSV view
titleaddressphonewebsitecategoryNametotalScorereviewsCountcitystatepostalCode
Phoenix Roofing & Repair301 E Bethany Home Rd A-121, Phoenix, AZ 85012(602) 4**-**54https://phoenixroofingandrepair.com/?utm_source=google-business-profile&utm_medium=organic_local&utm_campaign=gbp_phoenixRoofing contractor4.91051PhoenixArizona85012
Arizona Roofers4836 E McDowell Rd C100, Phoenix, AZ 85008(480) 6**-**32https://arizonaroofers.com/Roofing contractor4.9785PhoenixArizona85008

The same two rows as JSON:

{ "title": "Phoenix Roofing & Repair", "address": "301 E Bethany Home Rd A-121, Phoenix, AZ 85012", "phone": "(602) 4**-**54", "website": "https://phoenixroofingandrepair.com/?utm_source=google-business-profile&utm_medium=organic_local&utm_campaign=gbp_phoenix", "categoryName": "Roofing contractor", "totalScore": 4.9, "reviewsCount": 1051, "city": "Phoenix", "state": "Arizona", "postalCode": "85012" } { "title": "Arizona Roofers", "address": "4836 E McDowell Rd C100, Phoenix, AZ 85008", "phone": "(480) 6**-**32", "website": "https://arizonaroofers.com/", "categoryName": "Roofing contractor", "totalScore": 4.9, "reviewsCount": 785, "city": "Phoenix", "state": "Arizona", "postalCode": "85008" } // 3 more rows, 5 total

Set limit up to 100 businesses per search. Swap the query for your own niche and city. The full Maps record is documented on the Google Maps scraper API page.

WHAT EVERY BUSINESS INCLUDES

What data do you get?

Every business comes back complete. No field tiers, no add-on charges:

IdentityName · placeId · cid ContactPhone · website AddressStreet · city · state · zip ReputationRating · review count CategoryPrimary + all categories HoursFull weekly schedule LocationLat / lng
THE CATCH

Maps records do not include email addresses. A Google Maps listing carries a phone and a website. No listing carries an email, so no Maps scraper can truthfully return one. Tools that show emails next to Maps rows are pulling them from somewhere else. On CrustAPI, emails come from the LinkedIn people side, covered below.

THREE STEPS

How do you scrape leads?

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 roofing contractors in Phoenix. The businesses land in a table.

  3. 3

    Click export. Download the CSV, or copy your key and run the curl above for JSON.

EXPORT

How do you export to CSV?

Each business is one flat JSON object, so a single jq line turns a response into a spreadsheet-ready file:

curl "https://crustapi.com/v1/search?type=maps&q=YOUR%20QUERY&limit=100" -H "x-api-key: YOUR_KEY" \ | jq -r '.places[] | [.title, .phone, .website, .address, .totalScore, .reviewsCount] | @csv' \ > leads.csv

If you would rather skip the terminal, the playground runs the same search in the browser and shows the rows as one flat table.

Pull your first lead list free
Try it free. No card, no contract.
Try for free
THE OTHER HALF

People leads from LinkedIn

Businesses are half a lead list; the other half is the person you write to. The same key runs LinkedIn people search (beta): find public profiles by role and keyword, with no account of yours in the loop.

# search people by what they do (beta) curl "https://crustapi.com/v1/linkedin?type=search&keywords=head of growth fintech" \ -H "x-api-key: YOUR_KEY"
// the shape of each match (names masked on this page): { "name": "Dave L.", "headline": "Head of Growth at Cap", "currentTitle": "Head of Growth", "currentCompany": "Cap", "location": "New York, New York, United States", "profileUrl": "https://www.linkedin.com/in/d********z" }

Add enrich=true to pull each match as a full public profile in the same call. When an email can be found and verified for a person, it lands on their result.

The full set (profiles, companies, jobs, posts) is on the LinkedIn scraper API page, with deep dives on people search (beta) and company pages.

PRICING

How much does lead scraping cost?

Maps bills the Maps rate for each business a search returns. Forty businesses cost $0.0784 at standard Maps prices. LinkedIn reads start at $0.006 per successful request. Here is the deposit pricing:

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.

Funds are prepaid and never expire, so a slow month does not burn what you bought.

WHO IT'S FOR

Who uses a lead scraper?

Related: Google Maps scraper API · Google Reviews API · LinkedIn people search API

FAIR PLAY

When another tool is the better pick: a point-and-click extension you drive by hand, or a finished list you buy once from a data broker, gets you going with zero setup. CrustAPI earns its keep when you want fresh data on demand, a repeatable pipeline, and billing only on results.

BEFORE YOU ASK

Common questions

From Google Maps: business name, address, phone, website, rating, review count, categories, hours, and location. From LinkedIn people search (beta): name, headline, current title, company, location, and profile URL, with the full public profile available through enrich=true. Everything comes back as flat JSON.

No, and be wary of any tool that says otherwise. A Maps listing carries a phone and a website, never an email. On CrustAPI, verified emails come from the LinkedIn people endpoints: when an email can be found and verified for a person, it lands on their result.

The response is flat JSON, so one jq line turns it into a CSV file (the exact command is on this page). It also drops straight into Sheets, Clay, a CRM, or a database. If you would rather not touch a terminal, the playground at /app shows results as a table in the browser.

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.

CrustAPI only reads what a signed-out visitor can see, with no fake accounts. That logged-out, public-only collection has repeatedly defeated computer-fraud and contract claims. We run the collection, so no account of yours is in the loop.

Yes. The playground at /app runs every search type in the browser. The API also plugs into n8n, Clay, LangChain, CrewAI, and MCP, so no-code flows and agents can call it too.

WORKS WITH YOUR STACK

Build your first lead list today

The free plan covers a real list. Pull the businesses, find the people, export the CSV.

Try for free
No credit card required