Skip to main content
This guide shows you how to set up webhook delivery so your server receives scraped Instagram data automatically when a collection job finishes.

Prerequisites

How webhooks work

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.

Step 1: Set up a test webhook

For testing, use webhook.site to get a temporary public URL:
  1. Open webhook.site in your browser
  2. Copy the unique URL displayed (e.g., https://webhook.site/abc-123-def)
  3. Keep the page open to monitor incoming requests

Step 2: Trigger a collection with the webhook URL

Add the endpoint query parameter to your async /trigger request:
Key parameters:

Step 3: Verify delivery

Once the collection completes (typically 30-60 seconds for a few profiles), 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:

Production webhook setup

For production, point the endpoint URL to your own server endpoint.

How to handle webhooks in Express.js

server.js

How to handle webhooks in Flask

server.py
Return a 200 status code within 30 seconds to acknowledge receipt. If your endpoint fails or times out, Bright Data retries delivery.

Webhook with authorization

If your endpoint requires authentication, add the webhook_header_Authorization parameter:

Allowlist webhook IPs

If your server uses an IP allowlist, add the following Bright Data webhook source IPs:

Troubleshooting

  • 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
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.
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.

Next steps

Deliver to Amazon S3

Store results directly in your S3 bucket.

All delivery options

Snowflake, Azure, GCS, and more.