---
title: "List scrapes"
method: GET
path: "/api/v1/jobs"
tags: ["MapsData API"]
---

# List scrapes

`GET /api/v1/jobs`

## Request

- Base URL: `https://mapsdata.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://mapsdata.ai/api/v1/jobs`
- Auth: `MapsData API key` (a scheme the document does not define)

Your workspace's scrapes, newest first. Keyset paginated.

## Query parameters

- `limit` integer
- `cursor` string, nullable: next_cursor from a prior page.
- `status` string, nullable: Filter by job status.

## Response `200`

Successful Response

- JobList
  - `data` Job[], required
    - `id` string, required
    - `status` string, required: One of: queued, running, cancelling, cancelled, completed, failed.
    - `progress` integer: Percent complete, 0-100.
    - `query` string, nullable
    - `list_name` string, nullable
    - `country` string, nullable
    - `states` string[]
    - `cities` object[]
    - `total_limit` integer, nullable
    - `lead_count` integer: Rows scraped so far. Live during a run.
    - `email_count` integer: Rows carrying an email. Set when the job settles, and the figure your usage is billed on.
    - `stop_reason` string, nullable: Why the scrape stopped. Set on essentially every completed scrape, so compare it against specific values rather than testing whether it is present. One of: 'limit_reached' (hit the requested total), 'coverage_exhausted' (covered every area selected and that was all there was), 'diminishing_returns' (results thinned out, so it stopped rather than walk the long tail), 'barren_query' (the densest areas returned almost nothing), 'user_cancel', 'stall', or 'memory_checkpoint'. The middle three all mean the area genuinely did not hold that many businesses and re-running returns the same count, so a result short of total_limit is expected rather than a failure. NULL means no reason was recorded: the scrape either finished before this field existed, or was cancelled or failed before it was set. Read it with `status`, never on its own.
    - `error_message` string, nullable
    - `export_error` string, nullable
    - `created_at` string, nullable
    - `started_at` string, nullable
    - `completed_at` string, nullable
    - `downloads` DownloadFlags: Which files exist for a job. Booleans, never object keys.
      - `csv` boolean
      - `xlsx` boolean
      - `csv_all` boolean
      - `xlsx_all` boolean
      - `filtered_csv` boolean
      - `filtered_xlsx` boolean
  - `has_more` boolean
  - `next_cursor` string, nullable: Pass as ?cursor= to fetch the next page.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `422`: Validation Error
- `429`: Too Many Requests

---

[API](https://skmtc.dev/mapsdata/apis/mapsdata-api.md) · [All operations](https://skmtc.dev/mapsdata/apis/mapsdata-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mapsdata/apis/mapsdata-api/revisions/c74810530033?raw)
