Configure the Bright Data Google Scraper API to push scraped Maps, Trends and review data to your HTTPS webhook across multiple endpoints (4xx errors retried).
This guide shows you how to set up webhook delivery so your server receives scraped Google data automatically when a collection job finishes.
When you trigger an async collection with an endpoint URL, Bright Data sends a POST request to that URL with the scraped data once the job completes. No polling required.
Your app --> POST /trigger (with webhook URL) --> Bright Data scrapes --> POST to your webhook
Once the collection completes (typically 30 to 60 seconds for a few records), check your webhook.site page. You should see a POST request with the scraped data.The payload is the same JSON array you would receive from a direct API download:
[ { "place_id": "ChIJaXQRs6lZwokRY6EFpJnhNNE", "name": "Empire State Building", "address": "20 W 34th St., New York, NY 10001", "rating": 4.7, "reviews_count": 98500 }, { "place_id": "ChIJ4zGFAZpYwokRGUGph3Mf37k", "name": "Central Park", "address": "New York, NY", "rating": 4.8, "reviews_count": 325000 }]
from flask import Flask, request, jsonifyapp = Flask(__name__)@app.route("/webhook/google", methods=["POST"])def handle_webhook(): records = request.get_json() print(f"Received {len(records)} records") for record in records: name = record.get("name") or record.get("title") print(f"- {name}") return jsonify({"received": True}), 200if __name__ == "__main__": app.run(port=3000)
Return a 200 status code within 30 seconds to acknowledge receipt. If your endpoint fails or times out, Bright Data retries delivery.
Verify the URL is publicly accessible (not localhost)
Check that your endpoint returns a 200 status code within 30 seconds
Verify the webhook IPs above are allowlisted if you have firewall rules
Receiving compressed data?
If you omit uncompressed_webhook=true, data arrives gzip-compressed. Add uncompressed_webhook=true to your trigger URL, or decompress the payload on your server.
Payload too large for your server?
Large collections can produce payloads up to 1 GB. Set express.json({ limit: "100mb" }) in Express.js or equivalent in your framework. If you need to handle very large datasets, use S3 delivery instead.