Scraper API

Google Maps Posts API

for offers, events, and announcements

Pull the updates a business publishes on its Google Maps listing as clean JSON. One request returns each post with its text, image, call-to-action, and timestamps, paginated, with proxies handled for you.

SUCCESS
99.8%

of requests succeed

P50
0.6s

median response

P95
1.1s

95% finish faster

PRICE
$0.75

per 1k post batches at volume

Stop maintaining scrapers

Google buries business posts in the listing. Your parser shouldn't care.

  • Posts loaded client-side, not in the HTML
  • CTAs and images nested per post
  • Dates as "Oct 15", not timestamps
  • Proxies and captchas per business
  • Re-parse the listing after each redesign
One integration commit replaces a backlog you’ll never finish.
scraper | git log
hotfix: posts empty, rendered client-side now
fix: CTA label and URL came back swapped
fix: relative date broke the sort
chore: rotate proxies for post runs again
fix: image URL resolved to a placeholder
hotfix: captcha loop on active listings
fix: pagination token stopped working
chore: refresh residential IPs by region
fix: event posts missing their dates
fix: retry storm on rate limits
hotfix: posts empty, rendered client-side now
fix: CTA label and URL came back swapped
fix: relative date broke the sort
chore: rotate proxies for post runs again
fix: image URL resolved to a placeholder
hotfix: captcha loop on active listings
fix: pagination token stopped working
chore: refresh residential IPs by region
fix: event posts missing their dates
fix: retry storm on rate limits
hotfix: posts empty, rendered client-side now
fix: CTA label and URL came back swapped
fix: relative date broke the sort
chore: rotate proxies for post runs again
fix: image URL resolved to a placeholder
hotfix: captcha loop on active listings
fix: pagination token stopped working
chore: refresh residential IPs by region
fix: event posts missing their dates
fix: retry storm on rate limits
hotfix: posts empty, rendered client-side now
fix: CTA label and URL came back swapped
fix: relative date broke the sort
chore: rotate proxies for post runs again
fix: image URL resolved to a placeholder
hotfix: captcha loop on active listings
fix: pagination token stopped working
chore: refresh residential IPs by region
fix: event posts missing their dates
fix: retry storm on rate limits
feat: integrate HasData API
Code Examples

One GET Request. That's the whole integration.

Start with just a query. Add more parameters when your use case needs them.

request example
curl -G 'https://api.hasdata.com/scrape/google-maps/posts' \
	--data-urlencode 'dataId=0x873312ae759b4d15:0x1f38a9bec9912029' \
	--header 'x-api-key: <YOUR_API_KEY>' \
	--header 'Content-Type: application/json'
dataId Data ID
Google Maps data ID.
placeId Place ID
Unique reference to a place on a Google Map. Either dataId or placeId should be set.
nextPageToken Next Page Token
Defines the next page token. It is used for retrieving the next page results.
hl Language
The two-letter language code for the language you want to use for the search.
TRY ALL 4 PARAMETERS FREE
Response

Every post, one predictable schema

Each update comes back with the same keys, text, image, call-to-action, and a normalized timestamp. Map the fields once and forget about it.

posts.json
[
  {
    "postId": "775695035948935453",
    "locationId": "2916276679580905419",
    "title": null,
    "description": "North Rim day-use operations begin on October 16. Plan ahead for limited services...",
    "image": "https://lh3.googleusercontent.com/geougc/AF1QipMymB2uq73Vw",
    "cta": { "url": "https://go.nps.gov/nr-1016", "label": "Learn more" },
    "createdAt": "2022-10-16T04:07:19.000Z",
    "postedAt": "Oct 15, 2022",
    "postUrl": "https://www.google.com/search?q=Grand+Canyon+National+Park"
  }
]
Fields in posts
postId / locationId string

IDs of the post and the business

title / description string

Post heading (when present) and body text

image string

Image attached to the post

cta object

Call-to-action url and label, when the post has one

createdAt / postedAt string

ISO timestamp and Google's display date

postUrl string

Direct link to the post on Google

What We Offer

An all-in-one scraping service

Every feature you need to collect data from thousands to millions of requests.

Loved by developers

Teams that deleted their scraper

Now it's the part of the pipeline they don't think about

4.8 ★★★★★
across 100+ reviews on 5 platforms
Capterra Capterra ★★★★★

The Google Maps API from HasData has been incredibly useful for collecting structured local business data. We were able to extract names, categories, contact details, and even customer reviews.

MC
Meghana C.
Trustpilot Trustpilot ★★★★★

HasData delivers exactly what we need: speed and comprehensive search features. It's the fastest API we've used in this space. Plus, their customer support is fantastic.

Denver Sinclair
Denver Sinclair
Capterra Capterra ★★★★★

We rely on HasData for search performance data and broader scraping needs. Their APIs deliver highly structured data that integrates directly into our platforms.

JN
Jacob N.
Trustpilot Trustpilot ★★★★★

Great web scraping API which is incredibly easy to use. It requires minimal effort to get up and running, and the documentation is very clear and helpful.

Arnold Foster
Arnold Foster
Trustpilot Trustpilot ★★★★★

I needed to scrape some information they didn't already support, and they wrote the code for me right away, which was super nice of them.

Hussein Ali
Hussein Ali
Pricing

Plans that get cheaper at scale

Fixed price, fixed volume, no surprises at the end of the month. Upgrade when you need more.

Free
$0 /mo
One-time free trial
100 post batches to start
1 concurrent request
Team seats
Community support
Start free
Startup
$41 /mo
$2.04 / 1k post batches
20K post batches / month
15 concurrent requests
Team seats
Email support
Get started
Business
Recommended
$83 /mo
$0.82 / 1k post batches
100K post batches / month
30 concurrent requests
Team seats
Priority email support
Get started
Enterprise
$208 /mo
$0.69 / 1k post batches
50 concurrent requests
Team seats
Dedicated account manager
Get started
Monthly post batch volume
Free 100K 500K 2M 6M 10M
Best fit
Business
post batches / mo
100K
Concurrency
30
$ / 1k post batches
$0.82
$83 /mo
Get Started

Start with 100 free post batches. No credit card required.

FAQ

Questions, answered

1 Grab your API key 2 Send a GET request 3 Get structured JSON

Your first post batch
is minutes away

100 post batches free · no credit card