Google Maps Leads Scraper
Find businesses on Google Maps by type and location (optionally within a radius): name, address, phone, website, rating, reviews, categories and opening hours, plus emails (with the page they were found on), phone numbers and social profiles from each business website. One row per company. No login, no browser.
- LIVE
- 1 credit per business lead
- Failed results are free
Try it live
Press “Run it live” and the real result shows up here, exactly what your agent gets back.
Example output
What your agent gets back.
torhaus - Your Dentists in Berlin
- Phone
- 030 959999400
- info@zahnarzt-torhaus.de
- Rating
- 4.9
- Category
- Dentist
- Categories
- Dentist, Cosmetic dentist, Dental implants periodontist +5
Goode Plumbing
- Phone
- +1 773-280-8496
- info@goodeplumbing.com
- Rating
- 4.8
- Category
- Plumber
- Categories
- Plumber, Drainage service
Julius Brantner Brothandwerk - Altstadt
- Phone
- 089 215280990
- servus@julius-brantner.de
- Rating
- 4.8
- Category
- Bakery
- Categories
- Bakery
View raw JSON
{
"placeId": "ChIJ--eWx5RRqEcRdw6wJaph-Ig",
"name": "torhaus - Your Dentists in Berlin",
"category": "Dentist",
"categories": [
"Dentist",
"Cosmetic dentist",
"Dental implants periodontist",
"Dental laboratory",
"Denture care center",
"Emergency dental service",
"Endodontist",
"Oral surgeon"
],
"address": "Robert-Koch-Platz 11, 10115 Berlin",
"street": "Robert-Koch-Platz 11",
"neighborhood": "Mitte",
"city": "Berlin",
"postalCode": "10115",
"countryCode": "DE",
"phone": "030 959999400",
"phoneInternational": "+49 30 959999400",
"website": "https://www.zahnarzt-torhaus.de/",
"email": "info@zahnarzt-torhaus.de",
"emails": [
"info@zahnarzt-torhaus.de"
],
"contactsStatus": "found",
"rating": 4.9,
"reviewsCount": 236,
"latitude": 52.5284086,
"longitude": 13.378451199999999,
"openingHours": [
{
"day": "Wednesday",
"hours": "8 am–8 pm"
},
{
"day": "Thursday",
"hours": "8 am–8 pm"
},
{
"day": "Friday",
"hours": "8 am–8 pm"
},
{
"day": "Saturday",
"hours": "Closed"
},
{
"day": "Sunday",
"hours": "Closed"
},
{
"day": "Monday",
"hours": "8 am–8 pm"
},
{
"day": "Tuesday",
"hours": "8 am–8 pm"
}
],
"timezone": "Europe/Berlin",
"featureId": "0x47a85194c796e7fb:0x88f861aa25b00e77",
"mapsUrl": "https://www.google.com/maps/search/?api=1&query=torhaus%20-%20Your%20Dentists%20in%20Berlin&query_place_id=ChIJ--eWx5RRqEcRdw6wJaph-Ig",
"rank": 3,
"searchQuery": "dentist",
"searchLocation": "Berlin, Germany",
"scrapedAt": "2026-10-21T03:14:15.862Z"
}Use it from your agent
One key, any agent.
- 01Get your keySign up with your email. You start with 2,000 free credits.
- 02Call the toolSend the input as JSON. The answer comes back with the results and the credits used.
- 03Or plug in MCPAdd one block to Claude, Cursor or any MCP client and your agent finds “maps-leads” by itself.
curl -X POST https://pullwire.dev/api/v1/tools/maps-leads/runs \
-H "x-api-key: $PULLWIRE_API_KEY" \
-H "content-type: application/json" \
-d '{"searches":[{"query":"dentist","location":"Berlin, Germany"}],"maxResults":3}'Waits up to 25 s for the results. Add ?async=1 to get a run id back right away.
Options
Everything you can set.
| Field | What it does | Type | Default |
|---|---|---|---|
| Searchesrequiredsearches | One entry per business type + location combination. | list of entries | – |
| Business type or keywordrequiredsearches[].query | What to look for, as you would type it into Google Maps, e.g. "dentist", "plumber", "vegan restaurant". | text | – |
| Locationsearches[].location | City, district, region or country, e.g. "Berlin, Germany" or "Austin, TX". Empty: the query is used as-is. | text | – |
| Radius (km)searches[].radiusKm | Only businesses within this distance of the location's center, e.g. 3 for "within 3 km of Berlin-Kreuzberg", sorted nearest first among the ~120-200 places Google Maps returns for that area. Needs a location. Empty: the area Google Maps picks for the location. | number | – |
| Max results for this searchsearches[].maxResultsPerSearch | Stop this search after this many businesses. Google Maps itself returns roughly 120-200 places per search; for more, split the area into districts or nearby towns. | number | 100 |
| Find emails and social profilesenrichContacts | Visit each business website (homepage plus contact, imprint or privacy pages when needed) to collect email addresses, phone numbers and Facebook, Instagram, LinkedIn, X, YouTube, TikTok and Pinterest profiles. | yes / no | yes |
| Website pages per businessmaxContactPages | Homepage plus up to this many minus one contact, imprint or privacy pages, only while no address of the business itself has been found (an agency or platform address alone does not count). | number | 3 |
| Languagelanguage | Language of categories, opening hours and descriptions, e.g. "en", "de", "fr". | text | en |
| Country biascountryCode | Two-letter country code that biases ambiguous place names, e.g. "us" or "de". Empty: none. | text | – |
| Skip duplicates across searchesdedupe | Return each business only once even when several searches find it. | yes / no | yes |
| One row per companyonePerCompany | Skip a business whose website domain or phone number was already returned (branches of one company, double listings). Shared hosts like Facebook pages or booking platforms never count as the same company. | yes / no | yes |
| Max resultsmaxResults | Stop after this many businesses in total across all searches. Empty: no extra cap. | number | – |
Pricing
Pay for results, not requests.
1credit per business lead
One business returned from a Google Maps search, including contact enrichment from its website when enabled. Searches with zero matches are not charged.
- Failed results are free
- One balance for every tool
- 2,000 free credits when you sign up
Use cases
What people do with it.
More tools
Same key, more sources.
[1706.03762] Attention Is All You Need
- Status code
- 200
- Format
- markdown
- Language
- en
- Content type
- text/html
Abstract page for arXiv paper 1706.03762: Attention Is All You Need
Web Scraper
LIVETurn any public web page into clean, LLM-ready Markdown, raw HTML or JSON fields picked with CSS selectors. Optional JavaScript rendering, screenshots and an automatic residential-proxy fallback when a site blocks.
Me at the zoo
- Channel
- jawed
- Word count
- 33
- Duration
- 0:21
- Language matched
- Yes
Also hier sind wir vor den Elefanten. Das Coole an den Typen ist dass sie sehr, sehr, sehr, lange Rüssel haben. Und das ist cool. Ansonsten gibt es nicht wirklich viel zu sagen.
YouTube Transcripts
LIVETranscripts of YouTube videos with timestamps, chapters, language choice and video metadata.
Nike
- Start date
- Jun 20, 2025
- Platforms
- Facebook, Instagram
- Active
- Yes
- End date
- Aug 28, 2025
Get the gear that goes hard on and off the field.
Facebook Ads Library Scraper
LIVESearch the Facebook Ad Library by keyword or advertiser Page ID: ad text, images, videos, CTA, run dates and platforms. No login, no browser.