The NanoScrape Google Maps Scraper is an Apify actor that extracts business listings from maps.google.com. It returns 84 fields per result including title, phone, address, description, rating, priced at $1/1k place, with no API key or monthly subscription required.
Scrape Google Maps places with 30+ fields: name, address, phone, website, rating, reviews, hours, GPS (source platform). Optional add-ons find emails, social profiles and LinkedIn from each website, merged into one row per business. $1 per 1,000 places.
| Field | Type | Example | Group | Fill % |
|---|---|---|---|---|
company_id | string | restaurants in Paris | Core | 100% |
data_id | string | null | 0x89c25a3cbc665ca7:0xe3353b04c599edfb | Core | 100% |
place_id | string | null | ChIJp1xmvDxawokR--2ZxQQ7NeM | Core | 100% |
title | string | The Paris Café | Core | 100% |
social_urls | object | (populated when data available) | Core | — |
hiring_jobs_url | string | null | (populated when data available) | Core | — |
linkedin_company | object | null | (populated when data available) | Company | — |
address | string | null | The Paris Café, 119 South Street, 119 Peck Slip, New York, NY 10038 | Location | 100% |
complete_address | object | {"street": "119 South Street, 119 Peck Slip", "city": "New York", "postal_code": | Location | 100% |
latitude | number | null | 40.7073039 | Location | 100% |
longitude | number | null | -74.00157759999999 | Location | 100% |
address_from_website | string | null | (populated when data available) | Location | — |
description | string | null | Updated historic NYC eatery with elevated French dishes, signature cocktails & vibrant ... | Description | 76% |
open_hours | object | null | {"Friday": ["12:00-15:00", "16:00-00:00"], "Saturday": ["11:00-15:00", "17:00-00 | Employment | 100% |
opening_hours | object | null | {"Friday": ["12:00-15:00", "16:00-00:00"], "Saturday": ["11:00-15:00", "17:00-00 | Employment | 100% |
rating | number | null | 4.3 | Reviews / rating | 100% |
review_count | integer | null | 989 | Reviews / rating | 100% |
review_rating | number | null | 4.3 | Reviews / rating | 100% |
reviews_per_rating | object | null | (populated when data available) | Reviews / rating | — |
reviews_link | string | null | https://search.google.com/local/reviews?placeid=ChIJp1xmvDxawokR--2ZxQQ7NeM&q=restauran... | Reviews / rating | 100% |
user_reviews | array | [] | Reviews / rating | — |
review_intel_math | object | null | (populated when data available) | Reviews / rating | — |
review_intel_llm | object | null | (populated when data available) | Reviews / rating | — |
category | string | null | American restaurant | Metadata | 100% |
scraped_at | string | 2026-11-01T05:32:04Z | Metadata | 100% |
images | array | [] | Media | — |
search_query | string | null | restaurants in Paris | Other | 100% |
cid | string | null | 16372056912056413691 | Other | 100% |
link | string | https://www.google.com/maps/place/The+Paris+Caf%C3%A9/@40.707304,-74.001578,17z/data=!3... | Other | 100% |
categories | array | ["American restaurant", "Brunch restaurant", "Event venue"] | Other | 100% |
attributes | object | null | {"Accessibility": ["Wheelchair accessible seating", "Assistive hearing loop", "W | Other | 100% |
plus_code | string | null | PX4X+W9 New York | Other | 100% |
timezone | string | null | America/New_York | Other | 100% |
phone | string | null | (populated when data available) | Other | 88% |
website | string | null | https://www.pariscafenyc.com/ | Other | 100% |
emails_from_website | array | (populated when data available) | Other | — |
phones_from_website | array | (populated when data available) | Other | — |
popular_times | object | null | (populated when data available) | Other | — |
price_range | string | null | (populated when data available) | Other | — |
status | string | OPERATIONAL | Other | 100% |
reservations | array | [{"link": "https://www.opentable.com/restaurant/profile/1436572?ref=1068", "sour | Other | 88% |
order_online | array | [] | Other | — |
menu | object | null | (populated when data available) | Other | — |
owner | object | null | (populated when data available) | Other | — |
searchString | string | null | restaurants in Paris | Other | 100% |
_query | string | null | restaurants in Paris | Other | 100% |
_rank | integer | null | 1 | Other | 100% |
contacts | array | (populated when data available) | Other | — |
job_listings | array | (populated when data available) | Other | — |
ssl | object | null | (populated when data available) | Other | — |
whois | object | null | (populated when data available) | Other | — |
gbp_completeness | object | null | (populated when data available) | Other | — |
seo_audit | object | null | (populated when data available) | Other | — |
tech_stack | object | null | (populated when data available) | Other | — |
broken_links | object | null | (populated when data available) | Other | — |
facebook | object | null | (populated when data available) | Other | — |
twitter | object | null | (populated when data available) | Other | — |
instagram | object | null | (populated when data available) | Other | — |
tiktok | object | null | (populated when data available) | Other | — |
youtube | object | null | (populated when data available) | Other | — |
page_speed_audit | object | null | (populated when data available) | Other | — |
icebreaker | object | null | (populated when data available) | Other | — |
phone_validation | object | null | (populated when data available) | Other | — |
local_rank | object | null | (populated when data available) | Other | — |
chain | object | null | (populated when data available) | Other | — |
reservation_platforms | array | ["opentable"] | Other | 88% |
duplicate_of | string | null | (populated when data available) | Other | — |
dedupe_confidence | number | null | (populated when data available) | Other | — |
compliance | object | null | (populated when data available) | Other | — |
freshness | object | null | (populated when data available) | Other | — |
hiring_checked | boolean | null | (populated when data available) | Other | — |
hiring_status | string | null | (populated when data available) | Other | — |
hiring_open_roles_count | integer | null | (populated when data available) | Other | — |
hiring_open_roles_count_is_capped | boolean | null | (populated when data available) | Other | — |
hiring_roles | array | null | (populated when data available) | Other | — |
hiring_roles_detail | array | null | (populated when data available) | Other | — |
hiring_open_roles_count_local | integer | null | (populated when data available) | Other | — |
hiring_open_roles_count_local_is_partial | boolean | null | (populated when data available) | Other | — |
hiring_sources | array | null | (populated when data available) | Other | — |
hiring_checked_at | string | null | (populated when data available) | Other | — |
hiring_not_read_reason | string | null | (populated when data available) | Other | — |
hiring_evidence | string | null | (populated when data available) | Other | — |
job_boards | object | null | (populated when data available) | Other | — |
_enrichment_status | object | (populated when data available) | Other | — |
{
"queries": [
{
"query": "Das LOFT Vienna",
"country": "AT",
"company_id": "test-001"
}
],
"maxResultsPerQuery": 10,
"language": "en",
"includeReviews": true,
"maxReviewsPerPlace": 8,
"reviewsSort": "newest",
"includePlaceDetails": true,
"maxResults": 30
}{
"company_id": "restaurants in Paris",
"cid": "16372056912056413691",
"data_id": "0x89c25a3cbc665ca7:0xe3353b04c599edfb",
"place_id": "ChIJp1xmvDxawokR--2ZxQQ7NeM",
"link": "https://www.google.com/maps/place/The+Paris+Caf%C3%A9/@40.707304,-74.001578,17z/data=!3m1!4b1!4m6!3m5!1s0x89c25a3cbc665ca7:0xe3353b04c599edfb!8m2!3d40.707304!4d-74.001578!16s",
"title": "The Paris Café",
"category": "American restaurant",
"categories": [
"American restaurant",
"Brunch restaurant",
"Event venue",
"Modern French restaurant"
],
"address": "The Paris Café, 119 South Street, 119 Peck Slip, New York, NY 10038",
"complete_address": {
"street": "119 South Street, 119 Peck Slip",
"city": "New York",
"postal_code": "10038",
"state": "NY",
"country": "US"
},
"latitude": 40.7073039,
"longitude": -74.00157759999999,
"plus_code": "PX4X+W9 New York",
"timezone": "America/New_York",
"phone": null,
"website": "https://www.pariscafenyc.com/",
"open_hours": {
"Friday": [
"12:00-15:00",
"16:00-00:00"
],
"Saturday": [
"11:00-15:00",
"17:00-00:00"
],
"Sunday": [
"11:00-17:00"
],
"Thursday": [
"16:00-23:00"
],
"Wednesday": [
"16:00-23:00"
]
},
"popular_times": null,
"price_range": null,
"status": "OPERATIONAL",
"review_count": 989,
"review_rating": 4.3,
"reviews_per_rating": null,
"reviews_link": "https://search.google.com/local/reviews?placeid=ChIJp1xmvDxawokR--2ZxQQ7NeM&q=restaurants+in+Paris&authuser=0&hl=en&gl=US",
"user_reviews": [],
"images": [],
"reservations": [
{
"link": "https://www.opentable.com/restaurant/profile/1436572?ref=1068",
"source": "OpenTable"
}
],
"order_online": [],
"attributes": {
"Accessibility": [
"Wheelchair accessible seating",
"Assistive hearing loop",
"Wheelchair accessible entrance",
"Wheelchair accessible parking lot"
],
"Highlights": [
"LGBTQ+ friendly"
]
},
"menu": null,
"owner": null,
"description": "Updated historic NYC eatery with elevated French dishes, signature cocktails & vibrant vibes.",
"rating": 4.3,
"opening_hours": {
"Friday": [
"12:00-15:00",
"16:00-00:00"
],
"Saturday": [
"11:00-15:00",
"17:00-00:00"
],
"Sunday": [
"11:00-17:00"
],
"Thursday": [
"16:00-23:00"
],
"Wednesday": [
"16:00-23:00"
]
},
"scraped_at": "2026-11-01T05:32:04Z",
"searchString": "restaurants in Paris",
"_query": "restaurants in Paris",
"search_query": "restaurants in Paris",
"_rank": 1,
"reservation_platforms": [
"opentable"
]
}Priced at $0.0010 per place. 10 places ≈ $0.01, 100 ≈ $0.10, 1,000 ≈ $1.00. The first runs land inside Apify's $5/mo free-tier credit — pay only for what you extract, no monthly subscription.
enableHiringSignals to true and the actor checks each place that has a website for open roles. It reads the company's own careers page and job systems (ATS boards) through our Job Feed actor. Off by default.hiring_status (hiring, no_open_roles, not_read or no_website), hiring_open_roles_count, up to 5 sample role titles in hiring_roles, and the careers page in hiring_jobs_url. not_read means we could not check, not "not hiring"; the reason is in hiring_not_read_reason.hiringSignalsMaxPlaces (default 50, up to 500) caps how many places are checked per run; the rest come back as not_read. Expect roughly 6 to 10 extra minutes for up to 50 checked places. Career sites that only work in a browser are skipped unless you turn on hiringBrowserFallback, which is slower and costs more.Click Open on Apify above to run google-maps-scraper in your browser - no code, no install. In the Apify console you get:
To run this actor from your own code you need an Apify API token. Get one in about a minute:
Free tier: Apify credits your account with $5 of platform usage every month, no credit card required. Enough to test any actor meaningfully. How many results that covers depends on the actor's price per result.
Run this actor from any language via the Apify REST API. Replace YOUR_TOKEN with your API token and adapt the input JSON to your needs.
curl -X POST "https://api.apify.com/v2/acts/santamaria-automations~google-maps-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'// npm install apify-client
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('santamaria-automations/google-maps-scraper').call({});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);# pip install apify-client
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('santamaria-automations/google-maps-scraper').call(run_input={})
items = list(client.dataset(run['defaultDatasetId']).iterate_items())
print(items)// dotnet add package Apify.Client
using Apify.Client;
var client = new ApifyClient("YOUR_TOKEN");
var run = await client.Actor("santamaria-automations/google-maps-scraper").CallAsync(new { });
var items = await client.Dataset(run.DefaultDatasetId).ListItemsAsync();// Maven: com.apify:apify-client
import com.apify.client.ApifyClient;
ApifyClient client = new ApifyClient("YOUR_TOKEN");
ActorRun run = client.actor("santamaria-automations/google-maps-scraper").call(Map.of());
List<Map<String,Object>> items = client.dataset(run.getDefaultDatasetId()).listItems();This actor is available on the Apify MCP server, so you can drive it from any MCP-compatible AI client - Claude Desktop, Claude.ai, Cursor, VS Code, LangChain, LlamaIndex, or a custom agent - without writing any code.
https://mcp.apify.com?tools=santamaria-automations/google-maps-scraperExample prompt once connected:
"Use <code>google-maps-scraper</code> to run a scrape on my target list and give me the results as a table."
Clients that support dynamic tool discovery (Claude.ai, VS Code) receive the full input schema automatically via add-actor.
Trigger this actor from your favorite automation tool. Every platform below can call the Apify API in a few clicks - no code required.
@apify/n8n-nodes-apify).santamaria-automations/google-maps-scraper.https://api.apify.com/v2/acts/santamaria-automations~google-maps-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN.application/json.https://api.apify.com/v2/acts/santamaria-automations~google-maps-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN, method POST, body raw JSON.https://api.apify.com/v2/acts/santamaria-automations~google-maps-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN.steps.http.$return_value in subsequent steps.https://api.apify.com/v2/acts/santamaria-automations~google-maps-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN, body type JSON.$1.00 / 1,000 place, billed per result on Apify. Apify's $5/month free tier covers the first runs. No monthly subscription — you only pay for what you extract.
84 fields per result. Full field catalog is listed in the 'What you can scrape' table above — includes core identifiers, descriptive text, dates, and any category-specific data.
Scraping publicly available data is generally permitted in most jurisdictions, but GDPR applies to any personal data you collect. Review your local rules and consult a lawyer for commercial use.
No. This actor reads public pages over HTTP with datacenter proxies. No API key, no OAuth, no rate-limit management on your side.
Every run pulls live data at execution time. Set up a schedule (daily/hourly/weekly cron) in the Apify console to keep your dataset current automatically.