Skip to content
Scrappa Get API key
Google Maps API 1 credit/request

Posts

GET https://scrappa.co/api/maps/posts?data_id=0x89c259a61c75684f%3A0x79d31adb123348d2&hl=en&gl=us

Fetch the owner posts of the Updates tab of a single Google Maps place: post text, offer and event headlines, validity window, call-to-action link, thumbnails and publication date. Posts come newest first, 10 per page, and the response carries the next page token.

Posts 1 credit/request

Endpoint

Request preview
GET
https://scrappa.co/api/maps/posts?data_id=0x89c259a61c75684f%3A0x79d31adb123348d2&hl=en&gl=us
Auth header
x-api-key
Cost
1 credit/request
data_id = 0x89c259a61c75684f:0x79d31adb123348d2
Response preview
200 OK
{
    "place": {
        "data_id": "0x89c259a61c75684f:0x79d31adb123348d2",
        "cid": "8778389626880739538",
        "name": "Stumptown Coffee Roasters",
        "logo": "https://lh6.googleusercontent.com/-uNxSvNQ0g1M/AAAAAAAAAAI/AAAAAAAAAAA/_ns-K8u9qxU/s40-c-k-mo/photo.jpg"
    },
    "posts": [
        {
            "post_id": "7922670519655566438",
            "title": null,
            "description": "We're proud to welcome back Costa Rica Montes de Oro to our single-origin lineup for the 15th year! Enjoy tasty notes of crisp green apple, syrupy apricot, and caramel sweetness in every cup.",
            "link": "http://stumptowncoffee.com/",
            "post_link": "https://search.google.com/local/posts?q=Stumptown+Coffee+Roasters&ludocid=8778389626880739538&lpsid=CIHM0ogKEICAgIC6ibDXGg&source=sh/x/loc/post/m1/1&lsig=AB86z5Vmj2Bn15Dk-BEO21A7q_SQ&shem=epsd1,esd2e,rimspwouoe,sdpie&shndl=-1",
...

Parameters

Start with the required fields, then add optional filters only when your use case needs them.

Runnable path

1 required parameter needed before sending a request.

3 optional filters available.

data_id string Required

Google Maps place identifier in google_id (0x...:0x...) format, the same id the reviews endpoints accept.

Example value 0x89c259a61c75684f:0x79d31adb123348d2
next_page_token string Optional

Token from the previous response to read the next, older page of posts.

Example value example
hl string Optional

Interface language for the upstream payload.

Example value en
gl string Optional

Country/region code for the upstream payload.

Example value us

Request Examples

PHP
<?php

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => "https://scrappa.co/api/maps/posts?data_id=0x89c259a61c75684f%3A0x79d31adb123348d2&hl=en&gl=us",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => [
        "x-api-key: YOUR_API_KEY_HERE"
    ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    echo "cURL Error #:" . $err;
} else {
    echo $response;
}
PHP
<?php

use Illuminate\Support\Facades\Http;

$response = Http::timeout(30)
    ->withHeaders(['x-api-key' => 'YOUR_API_KEY_HERE'])
    ->get('https://scrappa.co/api/maps/posts?data_id=0x89c259a61c75684f%3A0x79d31adb123348d2&hl=en&gl=us');

if ($response->successful()) {
    echo $response->body();
} else {
    echo "Error: " . $response->status();
}
JavaScript
const options = {
    method: 'GET',
    headers: {
        'x-api-key': 'YOUR_API_KEY_HERE'
    }
};

fetch('https://scrappa.co/api/maps/posts?data_id=0x89c259a61c75684f%3A0x79d31adb123348d2&hl=en&gl=us', options)
    .then(response => {
        if (!response.ok) {
            throw new Error(`HTTP error! status: ${response.status}`);
        }
        return response.text();
    })
    .then(data => console.log(data))
    .catch(error => console.error('Error:', error));
JavaScript
const axios = require('axios');

const options = {
    method: 'GET',
    url: 'https://scrappa.co/api/maps/posts?data_id=0x89c259a61c75684f%3A0x79d31adb123348d2&hl=en&gl=us',
    headers: {
        x-api-key: 'YOUR_API_KEY_HERE',
    }
};

try {
    const response = await axios(options);
    console.log(response.data);
} catch (error) {
    console.error('Error:', error.message);
}
Ruby
require 'net/http'
require 'uri'

uri = URI.parse("https://scrappa.co/api/maps/posts?data_id=0x89c259a61c75684f%3A0x79d31adb123348d2&hl=en&gl=us")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == 'https'

request = Net::HTTP::Get.new(uri.request_uri)
request['x-api-key'] = 'YOUR_API_KEY_HERE'

begin
    response = http.request(request)
    puts response.body
rescue => e
    puts "Error: #{e.message}"
end
Python
import http.client
import json

conn = http.client.HTTPSConnection("scrappa.co")

headers = {
    'x-api-key': 'YOUR_API_KEY_HERE',
}

try:
    conn.request("GET", "/api/maps/posts?data_id=0x89c259a61c75684f%3A0x79d31adb123348d2&hl=en&gl=us", headers=headers)
    res = conn.getresponse()
    data = res.read()
    print(data.decode("utf-8"))
except Exception as e:
    print(f"Error: {e}")
finally:
    conn.close()
Python
import requests

headers = {
    'x-api-key': 'YOUR_API_KEY_HERE',
}

try:
    response = requests.get('https://scrappa.co/api/maps/posts?data_id=0x89c259a61c75684f%3A0x79d31adb123348d2&hl=en&gl=us', headers=headers)
    response.raise_for_status()
    print(response.text)
except requests.exceptions.RequestException as e:
    print(f"Error: {e}")
Java
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;

public class ApiExample {
    public static void main(String[] args) {
        OkHttpClient client = new OkHttpClient();

        Request request = new Request.Builder()
            .url("https://scrappa.co/api/maps/posts?data_id=0x89c259a61c75684f%3A0x79d31adb123348d2&hl=en&gl=us")
        .addHeader("x-api-key", "YOUR_API_KEY_HERE")
            .build();

        try (Response response = client.newCall(request).execute()) {
            if (response.isSuccessful()) {
                System.out.println(response.body().string());
            } else {
                System.out.println("Error: " + response.code());
            }
        } catch (IOException e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}
Go
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {
    client := &http.Client{}
    req, err := http.NewRequest("GET", "https://scrappa.co/api/maps/posts?data_id=0x89c259a61c75684f%3A0x79d31adb123348d2&hl=en&gl=us", nil)
    if err != nil {
        fmt.Println("Error creating request:", err)
        return
    }
    req.Header.Set("x-api-key", "YOUR_API_KEY_HERE")

    resp, err := client.Do(req)
    if err != nil {
        fmt.Println("Error making request:", err)
        return
    }
    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println("Error reading response:", err)
        return
    }

    fmt.Println(string(body))
}
Terminal
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/maps/posts?data_id=0x89c259a61c75684f%3A0x79d31adb123348d2&hl=en&gl=us"
C#
using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        using var client = new HttpClient();
        client.DefaultRequestHeaders.Add("x-api-key", "YOUR_API_KEY_HERE");

        try
        {
            var response = await client.SendAsync(new HttpRequestMessage(HttpMethod.Get, "https://scrappa.co/api/maps/posts?data_id=0x89c259a61c75684f%3A0x79d31adb123348d2&hl=en&gl=us"));
            var content = await response.Content.ReadAsStringAsync();
            Console.WriteLine(content);
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }
}
TypeScript
import axios from 'axios';

async function run(): Promise<void> {
    try {
        const response = await axios({
            method: 'GET',
            url: 'https://scrappa.co/api/maps/posts?data_id=0x89c259a61c75684f%3A0x79d31adb123348d2&hl=en&gl=us',
            headers: {
        'x-api-key': 'YOUR_API_KEY_HERE',
            },
        });

        console.log(response.data);
    } catch (error) {
        console.error('Error:', error);
    }
}

void run();
RUST
use reqwest::Client;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = Client::new();

    let response = client
        .get("https://scrappa.co/api/maps/posts?data_id=0x89c259a61c75684f%3A0x79d31adb123348d2&hl=en&gl=us")
        .header("x-api-key", "YOUR_API_KEY_HERE")
        .send()
        .await?;

    println!("{}", response.text().await?);

    Ok(())
}

Response Schema

Example response fields are illustrative; inspect the JSON before integrating.

Example response fields

Scan these fields before integrating.

place posts pagination

Common posts fields

post_id title description link
JSON Response
200 OK
{
    "place": {
        "data_id": "0x89c259a61c75684f:0x79d31adb123348d2",
        "cid": "8778389626880739538",
        "name": "Stumptown Coffee Roasters",
        "logo": "https://lh6.googleusercontent.com/-uNxSvNQ0g1M/AAAAAAAAAAI/AAAAAAAAAAA/_ns-K8u9qxU/s40-c-k-mo/photo.jpg"
    },
    "posts": [
        {
            "post_id": "7922670519655566438",
            "title": null,
            "description": "We're proud to welcome back Costa Rica Montes de Oro to our single-origin lineup for the 15th year! Enjoy tasty notes of crisp green apple, syrupy apricot, and caramel sweetness in every cup.",
            "link": "http://stumptowncoffee.com/",
            "post_link": "https://search.google.com/local/posts?q=Stumptown+Coffee+Roasters&ludocid=8778389626880739538&lpsid=CIHM0ogKEICAgIC6ibDXGg&source=sh/x/loc/post/m1/1&lsig=AB86z5Vmj2Bn15Dk-BEO21A7q_SQ&shem=epsd1,esd2e,rimspwouoe,sdpie&shndl=-1",
            "thumbnails": [
                "https://lh3.googleusercontent.com/geougc/AF1QipMRyagBv6NZAjs4n7GOE7zjFMXos10L9mCYN5Gr=h305-no"
            ],
            "source": "Stumptown Coffee Roasters",
            "source_logo": "https://lh6.googleusercontent.com/-uNxSvNQ0g1M/AAAAAAAAAAI/AAAAAAAAAAA/_ns-K8u9qxU/s40-c-k-mo/photo.jpg",
            "online_link": "http://stumptowncoffee.com/",
            "online_link_text": "Order online",
            "posted_at_text": "Sep 7, 2021",
            "time": null
        },
        {
            "post_id": "1365009519158844022",
            "title": "Free Shipping",
            "description": "Free shipping on all orders until 9/5",
            "link": "https://search.google.com/local/posts?q=Stumptown+Coffee+Roasters&ludocid=8778389626880739538&lpsid=136500",
            "post_link": "https://search.google.com/local/posts?q=Stumptown+Coffee+Roasters&ludocid=8778389626880739538&lpsid=136500",
            "thumbnails": [
                "https://lh3.googleusercontent.com/geougc/AF1QipPjMsnKP14O3fJfh89EqfFopfpoG-b8dmq4MUvK=h305-no"
            ],
            "source": "Stumptown Coffee Roasters",
            "source_logo": "https://lh6.googleusercontent.com/-uNxSvNQ0g1M/AAAAAAAAAAI/AAAAAAAAAAA/_ns-K8u9qxU/s40-c-k-mo/photo.jpg",
            "online_link": "https://search.google.com/local/posts?q=Stumptown+Coffee+Roasters&ludocid=8778389626880739538&lpsid=136500",
            "online_link_text": "View Offer",
            "posted_at_text": "Aug 30, 2021",
            "time": "Valid Aug 30 - Sep 5"
        }
    ],
    "pagination": {
        "next_page_token": "CgsI6b369gUQwLGfBSoA",
        "has_more": true,
        "posts_returned": 10
    }
}

Errors

Handle these documented responses before retrying or showing customer-facing failures.

422

Validation Error

The data_id, next_page_token, hl or gl parameter failed validation before any upstream request ran. This response is not billed.

{
    "errors": {
        "data_id": [
            "The data ID must be a google_id in the 0x...:0x... format, for example 0x89c259a61c75684f:0x79d31adb123348d2."
        ]
    },
    "message": "The request validation failed"
}
503

Posts Temporarily Unavailable

The upstream service is temporarily unavailable. Please retry shortly.

{
    "error": "Google Maps posts are temporarily unavailable. Please retry.",
    "place": null,
    "posts": null,
    "retryable": true,
    "error_code": "google_maps_posts_upstream_unavailable",
    "pagination": null,
    "retry_after": 5
}

Generate Code with AI

Copy a ready-made prompt with all the endpoint details, parameters, and example responses. Paste it into ChatGPT, Claude, or any AI assistant to instantly generate working code.

Related reading

Try It Live

Test this endpoint in our interactive playground with real data.