logo

Run a Collection

GuideUpdated 2026-06-20

Once a collection has items in it, you can trigger a run at any time — manually from the dashboard or on a schedule. This guide walks through both approaches and shows you how to poll for results via the API.

In the dashboard

  1. Open Collections from the sidebar and click the collection you want to run.
  2. Click Run Now in the collection detail view.
  3. The collection status changes to Processing. Processing collections are always sorted to the top of the list so they are easy to track.
  4. When the run completes the status returns to its normal state and a new entry appears under Run History with download links for the result files.

Credit gate — check your balance first

A run only proceeds if your remaining credits are at least equal to the number of items in the collection. If you do not have enough credits, the run is rejected immediately — nothing is queued and no credits are deducted. Check your credit balance at any time under Account or via POST /users/credits/. To add credits, upgrade your plan on the Billing page.

Manual vs scheduled runs

Run typeHow it triggersWhen to use
ManualYou click Run Now (dashboard) or call POST /schedules/run/result/Ad-hoc checks, testing, one-off refreshes
ScheduledAutomatically fires on the collection's cadence (Daily, Weekly, Monthly, Every X Minutes)Ongoing monitoring, automated pipelines

Both run types go through the same credit gate and produce results in the same format. The only difference is who initiates the enqueue.

Via the API

Step 1 — trigger the run

Run Collection

POST
https://multicartapi.com/api/v1/schedules/run/result/
API Key or Session Token
ParameterTypeRequiredDescription
collection_idintegerRequiredID of the collection to run. All items in the collection are enqueued immediately.
curl https://multicartapi.com/api/v1/schedules/run/result/ \
  -X POST \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "collection_id": 101 }'
Response
{
"code": 200,
"data": "Scraping Processing Queued!",
"status": 1
}

If the run is rejected due to insufficient credits the envelope returns code: 402 and status: 0 — the HTTP transport is still 200. Check body.code and body.status to detect this case:

Response
{
"code": 402,
"data": "Not enough credits — ...",
"status": 0
}

The endpoint returns immediately. Scraping happens asynchronously in the background. Proceed to step 2 to poll for completion.

Step 2 — poll for results

List Run Results

POST
https://multicartapi.com/api/v1/schedules/collections/results/download/
API Key or Session Token
ParameterTypeRequiredDescription
collection_idintegerRequiredCollection ID to retrieve run history for.
skipintegerOptionalPagination offset (number of runner rows to skip).
limitintegerOptionalPage size (number of runner rows to return).
curl https://multicartapi.com/api/v1/schedules/collections/results/download/ \
  -X POST \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "collection_id": 101, "skip": 0, "limit": 5 }'
Response
{
"code": 200,
"data": [
  {
    "id": 88,
    "collection": 101,
    "is_download_generated": true,
    "download_links": {
      "pages": [
        "https://multicartapi.com/api/v1/results/101/88/AU Laptops_88_Results_Page_1.json"
      ],
      "all_pages": "https://multicartapi.com/api/v1/results/101/88/AU Laptops_88_Results_All_Pages.zip"
    },
    "total_exacted_result": 250,
    "total_results": 250,
    "created_at": "2026-06-20T12:00:00Z",
    "updated_at": "2026-06-20T12:05:00Z"
  }
],
"status": 1
}

Poll this endpoint until is_download_generated is true on the most recent runner entry (the first element in the array). A reasonable poll interval is every 10–30 seconds depending on collection size. Once is_download_generated is true, use the URLs in download_links.pages to fetch individual result JSON files, or download_links.all_pages to download a ZIP of all pages in one request.

Response is paginated by runner

Each element in data represents one run (identified by its id, called a runner ID). The most recent run is first. Use skip and limit to page through older runs. For most polling workflows, limit: 1 is sufficient.