Skip to main content
Bright Data Scraper API jobs can push results straight to your infrastructure instead of waiting for you to download them. Add an endpoint parameter for webhook delivery, or configure a cloud destination once and have every job write to it. The setup is identical for all scrapers; only the dataset_id changes.
The examples use the LinkedIn profiles scraper (gd_l1viktl72bvl7bjuj0). Swap in the dataset_id for your platform from the async requests table.

Prerequisites

Which delivery method should I use?

How to deliver results to a webhook

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 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:

How to handle webhooks in production

For production, point the endpoint URL to your own server endpoint.
server.js
server.py
Return a 200 status code within 30 seconds to acknowledge receipt. If your endpoint fails or times out, Bright Data retries delivery.

How to authenticate webhook deliveries

If your endpoint requires authentication, add the webhook_header_Authorization parameter:

Which IPs do webhooks come from?

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

How to deliver results to Amazon S3

S3 delivery is configured once per scraper in the Control Panel. After setup, every job writes its results to your bucket automatically.

Step 1: Create the IAM role

Bright Data writes to your bucket by assuming a role in your AWS account. Create a role that trusts Bright Data’s account 422310177405, with your Bright Data customer ID as the external ID, and grant it s3:PutObject on your bucket. The full policy and trust-relationship JSON is in Delivery options.

Step 2: Configure the delivery destination

  1. Navigate to your scraper configuration
  2. Click the Delivery settings tab
  3. Select Amazon S3 as the delivery destination
  4. Enter your credentials:
    • Bucket name: Your S3 bucket name
    • Role ARN: The IAM role ARN from Step 1
    • Region: Your S3 bucket region
    • Path prefix (optional): A folder path within the bucket (e.g., linkedin/profiles/)
  5. Select your preferred file format (JSON, NDJSON, or CSV)
  6. Click Save

Step 3: Trigger a collection

Trigger an async collection as normal. Results are delivered to your S3 bucket without any extra parameters:

Step 4: Verify delivery

Once the collection completes, check your S3 bucket for the delivered file:
You should see a file named with the snapshot ID (e.g., s_m1a2b3c4d5e6f7g8h.json). Download and inspect it:
You can also verify delivery status using the Monitor Delivery API.

Troubleshooting

  • Verify the URL is publicly accessible (not localhost)
  • Check that your endpoint returns a 200 status code within 30 seconds
  • Verify the 14 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. For very large datasets, use S3 delivery instead.
  • Verify the IAM role ARN and external ID are correct
  • Check that the bucket policy allows s3:PutObject from Bright Data’s account
  • Ensure the bucket region matches your configuration
  • Review delivery status in the Bright Data dashboard under Logs
Verify the trust policy on your IAM role includes Bright Data’s account (422310177405) and that your external ID matches your Bright Data customer ID, found in Account settings.

FAQ

Does delivery configuration differ per platform?

No. Webhook parameters and cloud destination setup are identical for every Bright Data scraper. Only the dataset_id in the trigger request changes.

Can I use a webhook and cloud storage at the same time?

Yes. Cloud delivery is configured per scraper in the Control Panel, and the endpoint parameter is set per request, so a single job can do both.

What happens if my webhook is down when a job finishes?

Bright Data retries delivery. If your endpoint stays unavailable, download the snapshot directly using the snapshot_id returned by the trigger call; snapshots stay available for 30 days.