# Local lead generation from Google Maps. Places first, then the people who run them.

> Find local businesses on Google Maps by keyword and city, read phone, website and hours, then get the owner's work email by LinkedIn handle.

Canonical: https://apiforagents.dev/use-cases/local-lead-generation · Updated 2026-10-21

Search Google Maps for a type of business in a city and get each place as a full card with contact, address, hours and rating. For the owner, find their LinkedIn profile and ask for a work email or phone by handle.

- Places: from $0.000225 per record
- People: from $0.001 per record
- Contacts: priced per call
- Free to start: $0.10

## The workflow

1. Run Google Maps search with a query and a location, such as dentists in Austin. Set website to "without" to keep places that list no website, or minRating to keep well rated ones.
2. Every hit is a full card. For places you already hold by Maps URL, Google Maps places returns the same card: rating, review keywords, contact, address, hours, popular times and socials.
3. For the person behind a business, run LinkedIn searchPeople with the business name as the query and titles such as Owner or Founder.
4. Check the headline and current position, then send the LinkedIn handle to contacts reveal. Ask for ["email"] alone when you do not need the number.
5. Write the rows to your CRM with the date each was measured, and run it on a schedule from your own job to catch new places.

## Who uses it

- **[Web and marketing agencies](https://apiforagents.dev/platforms/google_maps/search-api).** Search a trade in a city with website set to "without" and you have a list of businesses that need a site.
- **Local software sales.** Booking, POS and review tools sell to salons, clinics and restaurants. A Maps search by category and city is the account list.
- **Territory planning.** Count places, ratings and review volume by city before you send a rep or open a branch.

## Operations used

List prices per record. A call can carry a minimum, so quote first: the quote is free, and a record that does not come back is not charged.

| Step | Operation | What comes back | Price |
|---|---|---|---|
| 1 | Google Maps search | Places for a keyword in a location, each a full card | $0.000225 per record |
| 2 | Google Maps places | Rating, contact, address, hours, popular times, socials | $0.000225 per record |
| 3 | LinkedIn searchPeople | Profiles with headline, location and positions | $0.004 per record |
| 4 | Contacts reveal | Work email and mobile number by LinkedIn handle | quoted per call |

> **Quote before you loop** Send each search with "estimateOnly": true to see the most it can cost, then set "maxUsd" on every call in your city loop so one broad query cannot run past your budget.

## The operations in this workflow

- [Google Maps search](https://apiforagents.dev/platforms/google_maps/search-api): Places for a keyword in a location, each a full card
- [Google Maps places](https://apiforagents.dev/platforms/google_maps/places-api): Rating, contact, address, hours, popular times, socials
- [LinkedIn searchPeople](https://apiforagents.dev/platforms/linkedin/people-search-api): Profiles with headline, location and positions
- [Contacts reveal](https://apiforagents.dev/platforms/contacts/work-email-and-phone-api): Work email and mobile number by LinkedIn handle

## Questions

### Does the Google Maps search return phone numbers?

Each hit is a full place card with the contact details the place lists on Maps, along with address, hours and rating. A place that lists no phone has none to return.

### How do I get the owner's email?

Find the owner's LinkedIn profile with people search, then send the handle to the contacts reveal operation. A part that comes back empty is not charged, and a part your account already holds is free.

### Can I find businesses without a website?

Yes. Set website to "without" on the search and only places that list no website come back.

### Where should the LinkedIn handle come from?

From evidence: a people search result or a pasted profile URL. A handle guessed from a name can belong to someone else and is still charged.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md
