> ## Documentation Index
> Fetch the complete documentation index at: https://docs.brightdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Initiate collection and delivery

> Trigger a Bright Data Scraper Studio collection by API, manually or on a schedule, and deliver to webhook, S3, GCS, Azure, SFTP, email or API download.

Once you save a scraper to production in Bright Data Scraper Studio, you can trigger a collection run three ways (API, manual, or scheduled) and deliver the results in five formats (JSON, NDJSON, CSV, XLSX) to six destinations (API download, webhook, S3, GCS, Azure, Alibaba Cloud OSS, SFTP, or email). This page covers every option.

## Prerequisites

* A scraper saved to production in the [Bright Data Scraper Studio IDE](https://brightdata.com/cp/scrapers)
* An API key for the API-trigger and API-delivery paths ([create one](https://brightdata.com/cp/setting))

## How do I save a scraper to production?

While you edit code in the Bright Data Scraper Studio IDE, the system auto-saves your work as a development draft. To make the scraper runnable outside the IDE, click **Save to Production** in the top-right corner of the IDE. All production scrapers appear under **My Scrapers** in the control panel. Inactive scrapers are shown faded.

<Frame>
  <img src="https://mintcdn.com/brightdata/ilemiSHw8UogZ13k/images/scraping-automation/web-scraping-ide/initiate-collection-and-delivery-options/my-scrapers.png?fit=max&auto=format&n=ilemiSHw8UogZ13k&q=85&s=9e15b58693b5b900307378dfa344a78c" alt="My Scrapers dashboard showing saved scrapers" width="1317" height="831" data-path="images/scraping-automation/web-scraping-ide/initiate-collection-and-delivery-options/my-scrapers.png" />
</Frame>

## How do I trigger a scraper run?

Bright Data Scraper Studio supports three ways to initiate a collection.

<Tabs>
  <Tab title="Initiate by API">
    Start a collection through the REST API without opening the control panel. See [Getting started with the API](/api-reference/scraper-studio-api/Getting_started_wtih_the_API) for authentication, request format, and response schema.

    Before you send a request, create an API key. Go to [Dashboard > Account settings > API key](https://brightdata.com/cp/setting).

    <Frame>
      <img src="https://mintcdn.com/brightdata/ilemiSHw8UogZ13k/images/scraping-automation/web-scraping-ide/initiate-collection-and-delivery-options/initiate-by-api.png?fit=max&auto=format&n=ilemiSHw8UogZ13k&q=85&s=cfa88b89067509c7d2556d406829bb12" alt="Initiate scraper by API" width="1712" height="453" data-path="images/scraping-automation/web-scraping-ide/initiate-collection-and-delivery-options/initiate-by-api.png" />
    </Frame>

    The API-trigger panel gives you three things:

    1. **Inputs:** provide input values manually or through the API request body
    2. **Trigger behavior:** queue multiple requests to run in parallel or sequentially; queued jobs run in the order they are submitted
    3. **Preview of the API request:** Bright Data shows you a ready-to-run `curl` command. Select the **Linux Bash** viewer for `curl`. The response includes a `job_id` you use to fetch the data later.

    <Note>
      When delivery is set to **API download**, you must call the "Receive data" API endpoint to retrieve results. Webhook and cloud-storage destinations push data automatically.
    </Note>
  </Tab>

  <Tab title="Initiate manually">
    Start a collection from the Bright Data control panel with no code.

    <Frame>
      <img src="https://mintcdn.com/brightdata/ilemiSHw8UogZ13k/images/scraping-automation/web-scraping-ide/initiate-collection-and-delivery-options/initiate-manually.png?fit=max&auto=format&n=ilemiSHw8UogZ13k&q=85&s=4f2270461d5e2b503ff1513b3af4d6bb" alt="Initiate scraper manually" width="1718" height="515" data-path="images/scraping-automation/web-scraping-ide/initiate-collection-and-delivery-options/initiate-manually.png" />
    </Frame>

    1. **Trigger behavior:** add several requests in parallel or queue additional jobs to run after earlier ones finish
    2. **Set up inputs manually:** enter input values one at a time in the form
    3. **Upload CSV file:** for large input sets, upload a CSV (for example, a list of URLs). Bright Data provides a template you can download and fill in.
  </Tab>

  <Tab title="Schedule a scraper">
    Run the scraper on a recurring schedule.

    **Step 1, configure the schedule:**

    1. Pick a start date and time
    2. Choose a frequency (hourly, daily, weekly, or custom)
    3. Set a deadline for when the scraper must finish
    4. Review your configuration

    <Frame>
      <img src="https://mintcdn.com/brightdata/ilemiSHw8UogZ13k/images/scraping-automation/web-scraping-ide/initiate-collection-and-delivery-options/schedule-configuration.png?fit=max&auto=format&n=ilemiSHw8UogZ13k&q=85&s=8ff98514169433ce6b70e810786a063d" alt="Schedule configuration screen" width="1738" height="908" data-path="images/scraping-automation/web-scraping-ide/initiate-collection-and-delivery-options/schedule-configuration.png" />
    </Frame>

    **Step 2, set inputs:**

    1. Upload a CSV file with a large input set (for example, a list of URLs). Download the CSV template to match the expected format
    2. Or enter inputs manually in the form

    <Frame>
      <img src="https://mintcdn.com/brightdata/ilemiSHw8UogZ13k/images/scraping-automation/web-scraping-ide/initiate-collection-and-delivery-options/enter-input.png?fit=max&auto=format&n=ilemiSHw8UogZ13k&q=85&s=fc5ef217b959819e9803129824e37113" alt="Enter input values for a scheduled run" width="1735" height="912" data-path="images/scraping-automation/web-scraping-ide/initiate-collection-and-delivery-options/enter-input.png" />
    </Frame>
  </Tab>
</Tabs>

## What are the rate limits and concurrency limits?

Bright Data Scraper Studio enforces concurrency limits per scraper, based on whether the request is batch or real-time.

| Collection type | Concurrency limit                           |
| --------------- | ------------------------------------------- |
| Batch           | Up to 1,000 concurrent requests per scraper |
| Real-time       | No limit                                    |

When you exceed the batch limit, Bright Data returns this error: `Maximum limit of 1000 jobs per scraper has been exceeded. Please reduce the number of parallel jobs.`

## Batch vs real-time collection

Bright Data Scraper Studio offers two collection methods, each optimized for a different use case.

|                   | Batch collection                               | Real-time collection                     |
| ----------------- | ---------------------------------------------- | ---------------------------------------- |
| Input size        | Many inputs per job (list of URLs or keywords) | One input per request                    |
| Response timing   | Results returned after the full job completes  | Response returned in real time           |
| Retention         | 16 days                                        | 7 days                                   |
| Concurrency limit | 1,000 concurrent jobs                          | None                                     |
| Use when          | You are building a dataset and can wait        | You need an answer inside a live request |

Both methods are reliable. Pick the one that matches the shape of your application.

## How do I configure delivery?

Open **My Scrapers**, click a scraper row, and choose **Delivery preferences** to set where and how Bright Data Scraper Studio delivers results.

<AccordionGroup>
  <Accordion title="When should I receive the data?">
    * **Batch:** get results once the whole job finishes; efficient for large datasets
      * **Split batch:** deliver partial results in smaller chunks as they become ready
    * **Real-time:** get a fast response to a single request
      * **Skip retries:** do not retry on error (speeds up collection at the cost of completeness)
  </Accordion>

  <Accordion title="Which file formats are supported?">
    * JSON
    * NDJSON
    * CSV
    * XLSX
    * Parquet
  </Accordion>

  <Accordion title="Which delivery destinations are supported?">
    * Email
    * API download (pull via REST API)
    * Webhook (push via HTTPS POST)
    * Cloud storage: Amazon S3, Google Cloud Storage, Azure Blob Storage, Alibaba Cloud OSS
    * SFTP / FTP

    <Note>
      Media files cannot be delivered via Email or API download. Use cloud storage, SFTP, or webhook when collecting images, videos, or other binary content.
    </Note>
  </Accordion>

  <Accordion title="How can I control what goes in the batch output?">
    * Results and errors in separate files
    * Results and errors in one combined file
    * Only successful results
    * Only errors
  </Accordion>

  <Accordion title="Which notifications can I enable?">
    * Notify when a collection completes
    * Notify on success-rate thresholds
    * Notify when an error occurs
  </Accordion>
</AccordionGroup>

## How do I configure the output schema?

The output schema defines the structure of your collected data: field names, data types, default values, and any additional metadata you want Bright Data Scraper Studio to attach (timestamps, screenshots, WARC snapshots).

<img src="https://mintcdn.com/brightdata/ilemiSHw8UogZ13k/images/scraping-automation/web-scraping-ide/initiate-collection-and-delivery-options/output-schema.png?fit=max&auto=format&n=ilemiSHw8UogZ13k&q=85&s=23688a07496b17cb34408ca55a5a3a6d" alt="Output schema configuration" width="1600" height="853" data-path="images/scraping-automation/web-scraping-ide/initiate-collection-and-delivery-options/output-schema.png" />

| Control                   | Description                                                       |
| ------------------------- | ----------------------------------------------------------------- |
| **Input / Output schema** | Tab switch for the two schema views                               |
| **Custom validation**     | Define validation rules that run on every collected record        |
| **Parsed data**           | The raw fields the scraper's parser code emits                    |
| **Add new field**         | Add a new field by name and type                                  |
| **Additional data**       | Optional metadata: timestamp, screenshot, WARC snapshot, and more |

## Related

<CardGroup cols={2}>
  <Card title="Scraper Studio specifications" icon="file-lines" href="/datasets/scraper-studio/specifications">
    Infrastructure limits, billing, and data retention
  </Card>

  <Card title="WARC snapshots" icon="file-zipper" href="/datasets/scraper-studio/warc-ide">
    Archive raw HTTP responses alongside collected data
  </Card>
</CardGroup>
