Skip to content

Get data

All endpoints on this page accept a project API key in Authorization: Bearer <key>. Use the project ID associated with that key. The literal /v1/key path prefix is part of these request URLs.

export API_BASE="https://api.azscraper.com"
export API_KEY="<project-api-key>"
export PROJECT_ID="<project-id>"

Crawl jobs

Create a job

POST /v1/key/projects/{projectId}/jobs

Send a search job with keywords or a details job with ASINs or product URLs:

curl -sS -X POST "$API_BASE/v1/key/projects/$PROJECT_ID/jobs" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"type":"search","targets":["wireless earbuds"],"config":{"marketplace":"US","lang":"en-US"}}'
Field Type Description
type search or details Search Amazon by keyword or retrieve product details.
targets string array Keywords for search; ASINs or Amazon product URLs for details.
config.marketplace string, optional Marketplace code, such as US or UK.
config.lang string, optional Language hint, such as en-US.

The response contains data.id, which you can use to check the job's status. AzScraper queues the job and charges credits based on its targets.

List jobs for a project

GET /v1/key/projects/{projectId}/jobs

Optional query parameters:

Parameter Description
status Filter by job status.
q Search by keyword, ASIN, target, or job ID.
from, to Filter by creation date (ISO date or timestamp).
limit Page size; defaults to 20.
offset Pagination offset; defaults to 0.
curl -sS "$API_BASE/v1/key/projects/$PROJECT_ID/jobs?status=completed&limit=20&offset=0" \
  -H "Authorization: Bearer $API_KEY"

Get a job

GET /v1/key/jobs/{jobId}

Job statuses are queued, running, completed, failed, and cancelled. Poll with a few seconds between requests rather than tight-looping.

curl -sS "$API_BASE/v1/key/jobs/$JOB_ID" \
  -H "Authorization: Bearer $API_KEY"

Get result rows

GET /v1/key/jobs/{jobId}/results

Returns the job's stored result items. Each item's fields depend on whether the job searched by keyword or crawled product details.

Export results

GET /v1/key/jobs/{jobId}/export?format={json|csv|llm}

The response is a file download. The default format is json; csv returns a CSV file, and llm returns normalized, versioned JSON. The job must be complete before you can export it.

curl -sS "$API_BASE/v1/key/jobs/$JOB_ID/export?format=csv" \
  -H "Authorization: Bearer $API_KEY" \
  -o results.csv

See LLM-ready export for the normalized JSON contract.

Retry or cancel a job

Method Path Behavior
POST /v1/key/jobs/{jobId}/retry Retry a failed or cancelled job. The retry creates a new queued job.
POST /v1/key/jobs/{jobId}/cancel Cancel a queued or running job.

Send the same Bearer header with either request. A retry creates a new job and consumes credits for its targets.

Project analytics

GET /v1/key/projects/{projectId}/analytics

Use the optional from and to query parameters to select a date range. Values can be ISO timestamps or YYYY-MM-DD. By default, the range covers the last 30 days and ends now.

curl -sS "$API_BASE/v1/key/projects/$PROJECT_ID/analytics?from=2026-09-01&to=2026-10-01" \
  -H "Authorization: Bearer $API_KEY"

Schedules

Schedules create recurring crawl jobs in the project associated with the API key. Cron expressions use UTC.

Method Path Purpose
POST /v1/key/projects/{projectId}/schedules Create a schedule.
GET /v1/key/projects/{projectId}/schedules List schedules for the project.
PATCH /v1/key/schedules/{scheduleId} Change enabled, cron, or crawlConfig.

Create request example:

{
  "cron": "0 9 * * *",
  "crawlConfig": {
    "type": "details",
    "targets": ["B08N5WRWNW"],
    "config": { "marketplace": "US", "lang": "en-US" }
  }
}

crawlConfig uses the same type, targets, and optional config fields as Create a job.

Change tracking

These endpoints return monitored products and compare crawl snapshots within the project associated with the API key:

Method Path Parameters
GET /v1/key/projects/{projectId}/tracked-targets Lists tracked targets with their latest snapshot and change counts.
GET /v1/key/projects/{projectId}/tracked-targets/{asin}/timeline?marketplace={code} marketplace is required; optional limit controls the number of timeline entries.
GET /v1/key/projects/{projectId}/compare?from={resultSetId}&to={resultSetId} Compares monitored fields between two result sets.

Endpoint summary

Method Path
POST /v1/key/projects/{projectId}/jobs
GET /v1/key/projects/{projectId}/jobs
GET /v1/key/jobs/{jobId}
GET /v1/key/jobs/{jobId}/results
GET /v1/key/jobs/{jobId}/export
POST /v1/key/jobs/{jobId}/retry
POST /v1/key/jobs/{jobId}/cancel
GET /v1/key/projects/{projectId}/analytics
POST, GET /v1/key/projects/{projectId}/schedules
PATCH /v1/key/schedules/{scheduleId}
GET /v1/key/projects/{projectId}/tracked-targets
GET /v1/key/projects/{projectId}/tracked-targets/{asin}/timeline
GET /v1/key/projects/{projectId}/compare

For webhook configuration and delivery, see Webhooks.