---
title: "Get a search's status and result"
method: GET
path: "/jobs/{id}"
tags: ["Jobs"]
---

# Get a search's status and result

`GET /jobs/{id}`

## Request

- Base URL: `https://api.soldgraph.com/v1`
- URL: `https://api.soldgraph.com/v1/jobs/{id}`
- Auth: HTTP bearer

Returns HTTP 200 whether the job is pending, complete or failed, so check status. Polling costs no requests but counts toward the per-minute rate limit.

## Path parameters

- `id` string, uuid, required

## Query parameters

- `wait` integer
- `format` 'json' | 'csv'

## Response `200`

The job. Check status: pending, complete or failed.

- union
  - EbaySoldJob
    - `request_id` string, required: ID of this request. Poll it at /v1/jobs/{request_id}.
    - `status` 'pending' | 'complete' | 'failed', required: pending, complete or failed. Always check it, even on HTTP 200.
    - `credits` integer, required: Requests charged: 1 when complete, 0 for a page past the last one, while pending, or when failed.
    - `cached` boolean, required: True when the result came from the 15-minute cache.
    - `poll_url` string: Only while pending. A path like /v1/jobs/{id}: join it to https://api.soldgraph.com, not to the /v1 base URL.
    - `result` EbaySoldPage
      - `provider` string, required: Marketplace ID, like ebay or poshmark.
      - `country` string, required: The country searched: us, or on eBay the country you sent.
      - `query` string, required: The q you sent, with extra spaces removed.
      - `page` integer, required: The page you asked for.
      - `count` integer, required: Rows in result.data on this page.
      - `reported_total` integer, required: Total matches the marketplace reports for the search. It may be rounded or capped.
      - `next_page` integer, nullable, required: Send this as page to get the next page. Null on the last page, and on page 100, the deepest page served.
      - `collected_at` string, required: When we collected the page, as an ISO 8601 timestamp.
      - `schema_version` integer, required: Version of the result's shape for that marketplace: 1 or 2. It only rises when a field changes meaning.
      - `completeness` string, required: provider_page_only: one page as the marketplace served it, not a full history. TCGplayer recent sales say recent_sample_only.
      - `field_notes` string, required: Plain-text notes on how to read this page's fields.
      - `next_cursor` unknown, required
      - `page_size` integer, required: Rows per page, as eBay reports it.
      - `summary` object, required: Price maths over the rows on this page: priced_count, currency, median, low, high, p25, p75, earliest_sold_date, latest_sold_date and best_offer_accepted_count. No row is removed from data. Rows with a price range or an unread price are left out of the maths.
        - `priced_count` integer, required: Rows on this page that show one price in the site's currency.
        - `currency` string, required: Currency of the amounts below.
        - `median` number, nullable, required: Middle displayed price of those rows.
        - `low` number, nullable, required: Lowest displayed price.
        - `high` number, nullable, required: Highest displayed price.
        - `earliest_sold_date` string, nullable, required: Oldest sold date on this page.
        - `latest_sold_date` string, nullable, required: Newest sold date on this page.
        - `best_offer_accepted_count` integer, required: Rows that sold by accepted Best Offer. eBay shows only the asking price on these, so they are kept out of `median_excluding_best_offer`.
        - `p25` number, nullable, required: First-quartile displayed price: a quarter of priced rows are at or below it.
        - `p75` number, nullable, required: Third-quartile displayed price. With `p25`, a range that ignores a stray accessory or parts listing.
        - `median_excluding_best_offer` number, nullable, required: Median over rows whose displayed price is the sale price: accepted Best Offers, where eBay shows only the asking price, are left out. Null when every priced row was a Best Offer.
      - `data` EbaySoldRow[], required
        - `id` string, required: The marketplace's listing ID.
        - `title` string, nullable, required: Listing title as shown.
        - `link` string, required: URL of the listing on the eBay site you searched, like https://www.ebay.co.uk/itm/….
        - `format` string, required: auction when the sale had bids, otherwise fixed_price.
        - `displayed_price` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `displayed_price_text` string, nullable, required: The price text as shown, like $189.00, £124.46 or €230.00.
        - `displayed_price_range` object, nullable, required: { low, high, currency } when eBay shows a price range for a multi-variation listing ("$247.00 to $911.00"). Null otherwise. displayed_price is null for these rows, so they stay out of the summary maths.
          - `low` number, required
          - `high` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `best_offer_accepted` boolean, required: True when the sale closed on an accepted Best Offer. eBay does not publish the accepted amount on sold listings, so on these rows displayed_price is the seller's asking price. summary.median_excluding_best_offer gives the median of the rows whose price is the sale price.
        - `displayed_shipping` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `shipping_text` string, nullable, required: Shipping text as shown, like +$9.99 delivery, Free delivery or + €10.49 de envío.
        - `sold_date` string, nullable, required: Sale date as YYYY-MM-DD. eBay's text has no year, so we use the most recent date that matches. Null if the text couldn't be read.
        - `sold_date_text` string, nullable, required: Sold date text as shown. eBay leaves out the year. The order depends on the site: Sep-21 14:35 (US, Australia, France, Italy, Spain), 21-Sep 14:35 (UK, Canada) or 21. Sep. 14:35 (Germany).
        - `condition` string, nullable, required: eBay's condition text as shown, in the site's language, like Pre-Owned, Pre-owned or Gebraucht. To filter by condition in any language, use condition.
        - `bid_count` integer, nullable, required: Number of bids, for auctions. Null for fixed-price sales.
        - `seller_text` string, nullable, required: Seller text as eBay shows it: username, feedback count and positive percentage, e.g. clutch_supply (1,325) 99.7%.
        - `location_text` string, nullable, required: Seller location text as eBay shows it, like Located in United States or da Germania. Often null for sellers in the country you searched.
        - `image` string, nullable, required: Image URL on i.ebayimg.com.
    - `error` object
      - `code` 'page_mismatch' | 'schema' | 'network' | 'upstream' | 'throttled' | 'blocked' | 'rejected' | 'not_found' | 'filter_not_supported' | 'filter_not_applied' | 'location_not_served' | 'auth' | 'daily_limit' | 'deadline_exceeded' | 'credential_storage', required: Failed job code.
      - `message` string: What the code means, in plain words.
  - EbayListingsJob
    - `request_id` string, required: ID of this request. Poll it at /v1/jobs/{request_id}.
    - `status` 'pending' | 'complete' | 'failed', required: pending, complete or failed. Always check it, even on HTTP 200.
    - `credits` integer, required: Requests charged: 1 when complete, 0 for a page past the last one, while pending, or when failed.
    - `cached` boolean, required: True when the result came from the 15-minute cache.
    - `poll_url` string: Only while pending. A path like /v1/jobs/{id}: join it to https://api.soldgraph.com, not to the /v1 base URL.
    - `result` EbayListingsPage
      - `provider` string, required: Marketplace ID, like ebay or poshmark.
      - `country` string, required: The country searched: us, or on eBay the country you sent.
      - `query` string, required: The q you sent, with extra spaces removed.
      - `page` integer, required: The page you asked for.
      - `count` integer, required: Rows in result.data on this page.
      - `reported_total` integer, required: Total matches the marketplace reports for the search. It may be rounded or capped.
      - `next_page` integer, nullable, required: Send this as page to get the next page. Null on the last page, and on page 100, the deepest page served.
      - `collected_at` string, required: When we collected the page, as an ISO 8601 timestamp.
      - `schema_version` integer, required: Version of the result's shape for that marketplace: 1 or 2. It only rises when a field changes meaning.
      - `completeness` string, required: provider_page_only: one page as the marketplace served it, not a full history. TCGplayer recent sales say recent_sample_only.
      - `field_notes` string, required: Plain-text notes on how to read this page's fields.
      - `next_cursor` unknown, required
      - `page_size` integer, required: Rows per page, as eBay reports it.
      - `summary` object, required: Price maths over the rows on this page: priced_count, currency, median, low, high. No row is removed from data. Rows with a price range or an unread price are left out of the maths.
        - `priced_count` integer, required: Rows on this page that show one price in the site's currency.
        - `currency` string, required: Currency of the amounts below.
        - `median` number, nullable, required: Middle displayed price of those rows.
        - `low` number, nullable, required: Lowest displayed price.
        - `high` number, nullable, required: Highest displayed price.
        - `p25` number, nullable, required: First-quartile displayed price: a quarter of priced rows are at or below it.
        - `p75` number, nullable, required: Third-quartile displayed price. With `p25`, a range that ignores a stray accessory or parts listing.
      - `data` EbayListingsRow[], required
        - `id` string, required: The marketplace's listing ID.
        - `title` string, nullable, required: Listing title as shown.
        - `link` string, required: URL of the listing on the eBay site you searched, like https://www.ebay.co.uk/itm/….
        - `promoted` boolean, required: True for a sponsored placement.
        - `format` string, required: auction when the listing shows bids or an end time, otherwise fixed_price.
        - `displayed_price` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `displayed_price_text` string, nullable, required: The price text as shown, like $189.00, £124.46 or €230.00.
        - `displayed_price_range` object, nullable, required: { low, high, currency } when eBay shows a price range for a multi-variation listing ("$247.00 to $911.00"). Null otherwise. displayed_price is null for these rows, so they stay out of the summary maths.
          - `low` number, required
          - `high` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `displayed_shipping` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `shipping_text` string, nullable, required: Shipping text as shown, like +$9.99 delivery, Free delivery or + €10.49 de envío.
        - `condition` string, nullable, required: eBay's condition text as shown, in the site's language, like Pre-Owned, Pre-owned or Gebraucht. To filter by condition in any language, use condition.
        - `bid_count` integer, nullable, required: Number of bids, for auctions.
        - `ends_at` string, nullable, required: Auction end time, ISO 8601 UTC.
        - `best_offer` boolean, required: True when the seller accepts Best Offers.
        - `seller_text` string, nullable, required: Seller text as eBay shows it: username, feedback count and positive percentage, e.g. clutch_supply (1,325) 99.7%.
        - `location_text` string, nullable, required: Item location text as shown.
        - `image` string, nullable, required: Image URL on i.ebayimg.com.
    - `error` object
      - `code` 'page_mismatch' | 'schema' | 'network' | 'upstream' | 'throttled' | 'blocked' | 'rejected' | 'not_found' | 'filter_not_supported' | 'filter_not_applied' | 'location_not_served' | 'auth' | 'daily_limit' | 'deadline_exceeded' | 'credential_storage', required: Failed job code.
      - `message` string: What the code means, in plain words.
  - PoshmarkSoldJob
    - `request_id` string, required: ID of this request. Poll it at /v1/jobs/{request_id}.
    - `status` 'pending' | 'complete' | 'failed', required: pending, complete or failed. Always check it, even on HTTP 200.
    - `credits` integer, required: Requests charged: 1 when complete, 0 for a page past the last one, while pending, or when failed.
    - `cached` boolean, required: True when the result came from the 15-minute cache.
    - `poll_url` string: Only while pending. A path like /v1/jobs/{id}: join it to https://api.soldgraph.com, not to the /v1 base URL.
    - `result` PoshmarkSoldPage
      - `provider` string, required: Marketplace ID, like ebay or poshmark.
      - `country` string, required: The country searched: us, or on eBay the country you sent.
      - `query` string, required: The q you sent, with extra spaces removed.
      - `page` integer, required: The page you asked for.
      - `count` integer, required: Rows in result.data on this page.
      - `reported_total` integer, required: Total matches the marketplace reports for the search. It may be rounded or capped.
      - `next_page` integer, nullable, required: Send this as page to get the next page. Null on the last page, and on page 100, the deepest page served.
      - `collected_at` string, required: When we collected the page, as an ISO 8601 timestamp.
      - `schema_version` integer, required: Version of the result's shape for that marketplace: 1 or 2. It only rises when a field changes meaning.
      - `completeness` string, required: provider_page_only: one page as the marketplace served it, not a full history. TCGplayer recent sales say recent_sample_only.
      - `field_notes` string, required: Plain-text notes on how to read this page's fields.
      - `page_size` integer, required: Rows Poshmark returned before we removed listings that aren't sold. It can be larger than count.
      - `summary` object, required: Price maths over the rows on this page: priced_count, currency, median, low, high, p25, p75, earliest_sold_date and latest_sold_date. No row is removed from data. Rows with no single readable price are left out of the maths.
        - `priced_count` integer, required: Rows on this page that show one price.
        - `currency` string, required: Currency of the amounts below.
        - `median` number, nullable, required: Middle displayed price of those rows.
        - `low` number, nullable, required: Lowest displayed price.
        - `high` number, nullable, required: Highest displayed price.
        - `earliest_sold_date` string, nullable, required: Oldest sold date on this page.
        - `latest_sold_date` string, nullable, required: Newest sold date on this page.
        - `p25` number, nullable, required: First-quartile displayed price: a quarter of priced rows are at or below it.
        - `p75` number, nullable, required: Third-quartile displayed price. With `p25`, a range that ignores a stray accessory or parts listing.
      - `next_cursor` string, nullable, required: Send this as cursor, with page=next_page, to get the next page. Null on the last page.
      - `data` PoshmarkSoldRow[], required
        - `id` string, required: The marketplace's listing ID.
        - `title` string, nullable, required: Listing title as shown.
        - `link` string, required: URL of the listing on the marketplace.
        - `displayed_price` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `displayed_price_text` string, nullable, required: The price text as shown, like $189.00, or C$40.00 on Poshmark Canada.
        - `sold_date` string, required: Date part of sold_date_text, as YYYY-MM-DD.
        - `sold_date_text` string, required: When the listing's inventory changed to sold out, as an ISO 8601 timestamp. Not a verified sale time.
        - `condition` string, nullable, required: Poshmark's own condition code, as Poshmark returns it, like nwt or ug. See condition codes.
        - `seller_text` string, nullable, required: The seller's Poshmark username.
        - `brand` string, nullable, required: Brand as the seller entered it.
        - `size` string, nullable, required: Size as the seller entered it.
        - `image` string, nullable, required: Image URL on Poshmark's image CDN.
    - `error` object
      - `code` 'page_mismatch' | 'schema' | 'network' | 'upstream' | 'throttled' | 'blocked' | 'rejected' | 'not_found' | 'filter_not_supported' | 'filter_not_applied' | 'location_not_served' | 'auth' | 'daily_limit' | 'deadline_exceeded' | 'credential_storage', required: Failed job code.
      - `message` string: What the code means, in plain words.
  - PoshmarkListingsJob
    - `request_id` string, required: ID of this request. Poll it at /v1/jobs/{request_id}.
    - `status` 'pending' | 'complete' | 'failed', required: pending, complete or failed. Always check it, even on HTTP 200.
    - `credits` integer, required: Requests charged: 1 when complete, 0 for a page past the last one, while pending, or when failed.
    - `cached` boolean, required: True when the result came from the 15-minute cache.
    - `poll_url` string: Only while pending. A path like /v1/jobs/{id}: join it to https://api.soldgraph.com, not to the /v1 base URL.
    - `result` PoshmarkListingsPage
      - `provider` string, required: Marketplace ID, like ebay or poshmark.
      - `country` string, required: The country searched: us, or on eBay the country you sent.
      - `query` string, required: The q you sent, with extra spaces removed.
      - `page` integer, required: The page you asked for.
      - `count` integer, required: Rows in result.data on this page.
      - `reported_total` integer, required: Total matches the marketplace reports for the search. It may be rounded or capped.
      - `next_page` integer, nullable, required: Send this as page to get the next page. Null on the last page, and on page 100, the deepest page served.
      - `collected_at` string, required: When we collected the page, as an ISO 8601 timestamp.
      - `schema_version` integer, required: Version of the result's shape for that marketplace: 1 or 2. It only rises when a field changes meaning.
      - `completeness` string, required: provider_page_only: one page as the marketplace served it, not a full history. TCGplayer recent sales say recent_sample_only.
      - `field_notes` string, required: Plain-text notes on how to read this page's fields.
      - `page_size` integer, required: Rows Poshmark returned before we removed listings that aren't for sale. It can be larger than count.
      - `summary` object, required: Price maths over the rows on this page: priced_count, currency, median, low, high. No row is removed from data. Rows with no single readable price are left out of the maths.
        - `priced_count` integer, required: Rows on this page that show one price.
        - `currency` string, required: Currency of the amounts below.
        - `median` number, nullable, required: Middle displayed price of those rows.
        - `low` number, nullable, required: Lowest displayed price.
        - `high` number, nullable, required: Highest displayed price.
        - `p25` number, nullable, required: First-quartile displayed price: a quarter of priced rows are at or below it.
        - `p75` number, nullable, required: Third-quartile displayed price. With `p25`, a range that ignores a stray accessory or parts listing.
      - `next_cursor` string, nullable, required: Send this as cursor, with page=next_page, to get the next page. Null on the last page.
      - `data` PoshmarkListingsRow[], required
        - `id` string, required: The marketplace's listing ID.
        - `title` string, nullable, required: Listing title as shown.
        - `link` string, required: URL of the listing on the marketplace.
        - `displayed_price` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `displayed_price_text` string, nullable, required: The price text, like $35.00, or C$40.00 on Poshmark Canada.
        - `condition` string, nullable, required: Poshmark's own condition code, as Poshmark returns it, like nwt or ug. See condition codes.
        - `brand` string, nullable, required: Brand as the seller entered it.
        - `size` string, nullable, required: Size as the seller entered it.
        - `listed_at` string, nullable, required: When the listing was published, as an ISO 8601 timestamp.
        - `seller_text` string, nullable, required: The seller's Poshmark username.
        - `image` string, nullable, required: Image URL on Poshmark's image CDN.
    - `error` object
      - `code` 'page_mismatch' | 'schema' | 'network' | 'upstream' | 'throttled' | 'blocked' | 'rejected' | 'not_found' | 'filter_not_supported' | 'filter_not_applied' | 'location_not_served' | 'auth' | 'daily_limit' | 'deadline_exceeded' | 'credential_storage', required: Failed job code.
      - `message` string: What the code means, in plain words.
  - MercariSoldJob
    - `request_id` string, required: ID of this request. Poll it at /v1/jobs/{request_id}.
    - `status` 'pending' | 'complete' | 'failed', required: pending, complete or failed. Always check it, even on HTTP 200.
    - `credits` integer, required: Requests charged: 1 when complete, 0 for a page past the last one, while pending, or when failed.
    - `cached` boolean, required: True when the result came from the 15-minute cache.
    - `poll_url` string: Only while pending. A path like /v1/jobs/{id}: join it to https://api.soldgraph.com, not to the /v1 base URL.
    - `result` MercariSoldPage
      - `provider` string, required: Marketplace ID, like ebay or poshmark.
      - `country` string, required: The country searched: us, or on eBay the country you sent.
      - `query` string, required: The q you sent, with extra spaces removed.
      - `page` integer, required: The page you asked for.
      - `count` integer, required: Rows in result.data on this page.
      - `reported_total` integer, required: Total matches the marketplace reports for the search. It may be rounded or capped.
      - `next_page` integer, nullable, required: Send this as page to get the next page. Null on the last page, and on page 100, the deepest page served.
      - `collected_at` string, required: When we collected the page, as an ISO 8601 timestamp.
      - `schema_version` integer, required: Version of the result's shape for that marketplace: 1 or 2. It only rises when a field changes meaning.
      - `completeness` string, required: provider_page_only: one page as the marketplace served it, not a full history. TCGplayer recent sales say recent_sample_only.
      - `field_notes` string, required: Plain-text notes on how to read this page's fields.
      - `page_size` integer, required: Rows Mercari returned before we removed listings that aren't sold. It can be larger than count.
      - `summary` object, required: Price maths over the rows on this page: priced_count, currency, median, low, high, p25, p75, earliest_sold_date and latest_sold_date. No row is removed from data. Rows with no single readable price are left out of the maths.
        - `priced_count` integer, required: Rows on this page that show one price.
        - `currency` string, required: Currency of the amounts below.
        - `median` number, nullable, required: Middle displayed price of those rows.
        - `low` number, nullable, required: Lowest displayed price.
        - `high` number, nullable, required: Highest displayed price.
        - `earliest_sold_date` string, nullable, required: Oldest sold date on this page.
        - `latest_sold_date` string, nullable, required: Newest sold date on this page.
        - `p25` number, nullable, required: First-quartile displayed price: a quarter of priced rows are at or below it.
        - `p75` number, nullable, required: Third-quartile displayed price. With `p25`, a range that ignores a stray accessory or parts listing.
      - `next_cursor` string, nullable, required: Send this as cursor, with page=next_page, to get the next page. Null on the last page.
      - `data` MercariSoldRow[], required
        - `id` string, required: The marketplace's listing ID.
        - `title` string, nullable, required: Listing title as shown.
        - `link` string, required: URL of the listing on the marketplace.
        - `displayed_price` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `displayed_price_text` string, nullable, required: The price text as shown, like $189.00.
        - `sold_date` string, nullable, required: The date part of sold_date_text, as YYYY-MM-DD. Null when Mercari doesn't report a sold time.
        - `sold_date_text` string, nullable, required: The sold time Mercari reports, as a UTC timestamp. Null when Mercari doesn't report one.
        - `condition` string, nullable, required: Mercari's condition label: New, Like New, Good, Fair or Poor.
        - `seller_text` string, nullable, required: The seller's Mercari ID, as a string.
        - `image` string, nullable, required: Image URL on Mercari's image CDN.
        - `condition_id` integer, nullable, required: Mercari's condition number: 1 new, 2 like new, 3 good, 4 fair, 5 poor.
        - `category_id` integer, nullable, required: Mercari's category ID for the listing.
        - `brand_id` integer, nullable, required: Mercari's brand ID. The brand name isn't returned.
    - `error` object
      - `code` 'page_mismatch' | 'schema' | 'network' | 'upstream' | 'throttled' | 'blocked' | 'rejected' | 'not_found' | 'filter_not_supported' | 'filter_not_applied' | 'location_not_served' | 'auth' | 'daily_limit' | 'deadline_exceeded' | 'credential_storage', required: Failed job code.
      - `message` string: What the code means, in plain words.
  - MercariListingsJob
    - `request_id` string, required: ID of this request. Poll it at /v1/jobs/{request_id}.
    - `status` 'pending' | 'complete' | 'failed', required: pending, complete or failed. Always check it, even on HTTP 200.
    - `credits` integer, required: Requests charged: 1 when complete, 0 for a page past the last one, while pending, or when failed.
    - `cached` boolean, required: True when the result came from the 15-minute cache.
    - `poll_url` string: Only while pending. A path like /v1/jobs/{id}: join it to https://api.soldgraph.com, not to the /v1 base URL.
    - `result` MercariListingsPage
      - `provider` string, required: Marketplace ID, like ebay or poshmark.
      - `country` string, required: The country searched: us, or on eBay the country you sent.
      - `query` string, required: The q you sent, with extra spaces removed.
      - `page` integer, required: The page you asked for.
      - `count` integer, required: Rows in result.data on this page.
      - `reported_total` integer, required: Total matches the marketplace reports for the search. It may be rounded or capped.
      - `next_page` integer, nullable, required: Send this as page to get the next page. Null on the last page, and on page 100, the deepest page served.
      - `collected_at` string, required: When we collected the page, as an ISO 8601 timestamp.
      - `schema_version` integer, required: Version of the result's shape for that marketplace: 1 or 2. It only rises when a field changes meaning.
      - `completeness` string, required: provider_page_only: one page as the marketplace served it, not a full history. TCGplayer recent sales say recent_sample_only.
      - `field_notes` string, required: Plain-text notes on how to read this page's fields.
      - `page_size` integer, required: Rows Mercari returned before we removed listings that aren't for sale. It can be larger than count.
      - `summary` object, required: Price maths over the rows on this page: priced_count, currency, median, low, high. No row is removed from data. Rows with no single readable price are left out of the maths.
        - `priced_count` integer, required: Rows on this page that show one price.
        - `currency` string, required: Currency of the amounts below.
        - `median` number, nullable, required: Middle displayed price of those rows.
        - `low` number, nullable, required: Lowest displayed price.
        - `high` number, nullable, required: Highest displayed price.
        - `p25` number, nullable, required: First-quartile displayed price: a quarter of priced rows are at or below it.
        - `p75` number, nullable, required: Third-quartile displayed price. With `p25`, a range that ignores a stray accessory or parts listing.
      - `next_cursor` string, nullable, required: Send this as cursor, with page=next_page, to get the next page. Null on the last page.
      - `data` MercariListingsRow[], required
        - `id` string, required: The marketplace's listing ID.
        - `title` string, nullable, required: Listing title as shown.
        - `link` string, required: URL of the listing on the marketplace.
        - `displayed_price` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `displayed_price_text` string, nullable, required: The price text, like $35.00.
        - `condition` string, nullable, required: Mercari's condition label: New, Like New, Good, Fair or Poor.
        - `listed_at` string, nullable, required: When the listing was published, as an ISO 8601 timestamp.
        - `seller_text` string, nullable, required: The seller's Mercari ID, as a string.
        - `image` string, nullable, required: Image URL on Mercari's image CDN.
        - `condition_id` integer, nullable, required: Mercari's condition number: 1 new, 2 like new, 3 good, 4 fair, 5 poor.
        - `category_id` integer, nullable, required: Mercari's category ID for the listing.
        - `brand_id` integer, nullable, required: Mercari's brand ID. The brand name isn't returned.
    - `error` object
      - `code` 'page_mismatch' | 'schema' | 'network' | 'upstream' | 'throttled' | 'blocked' | 'rejected' | 'not_found' | 'filter_not_supported' | 'filter_not_applied' | 'location_not_served' | 'auth' | 'daily_limit' | 'deadline_exceeded' | 'credential_storage', required: Failed job code.
      - `message` string: What the code means, in plain words.
  - DepopListingsJob
    - `request_id` string, required: ID of this request. Poll it at /v1/jobs/{request_id}.
    - `status` 'pending' | 'complete' | 'failed', required: pending, complete or failed. Always check it, even on HTTP 200.
    - `credits` integer, required: Requests charged: 1 when complete, 0 for a page past the last one, while pending, or when failed.
    - `cached` boolean, required: True when the result came from the 15-minute cache.
    - `poll_url` string: Only while pending. A path like /v1/jobs/{id}: join it to https://api.soldgraph.com, not to the /v1 base URL.
    - `result` DepopListingsPage
      - `provider` string, required: Marketplace ID, like ebay or poshmark.
      - `country` string, required: The country searched: us, or on eBay the country you sent.
      - `query` string, required: The q you sent, with extra spaces removed.
      - `page` integer, required: The page you asked for.
      - `count` integer, required: Rows in result.data on this page.
      - `reported_total` integer, nullable, required: The total Depop reports, when there is one. Often null after the first page. It doesn't mean full coverage.
      - `next_page` integer, nullable, required: Send this as page to get the next page. Null on the last page, and on page 100, the deepest page served.
      - `collected_at` string, required: When we collected the page, as an ISO 8601 timestamp.
      - `schema_version` integer, required: Version of the result's shape for that marketplace: 1 or 2. It only rises when a field changes meaning.
      - `completeness` string, required: provider_page_only: one page as the marketplace served it, not a full history. TCGplayer recent sales say recent_sample_only.
      - `field_notes` string, required: Plain-text notes on how to read this page's fields.
      - `page_size` integer, required: Rows Depop returned before we removed listings that aren't active listings from the country you searched, priced in its currency. It can be larger than count.
      - `summary` object, required: Price maths over the rows on this page: priced_count, currency, median, low, high. No row is removed from data. Rows with no single readable price are left out of the maths.
        - `priced_count` integer, required: Rows on this page that show one price.
        - `currency` string, required: Currency of the amounts below.
        - `median` number, nullable, required: Middle displayed price of those rows.
        - `low` number, nullable, required: Lowest displayed price.
        - `high` number, nullable, required: Highest displayed price.
        - `p25` number, nullable, required: First-quartile displayed price: a quarter of priced rows are at or below it.
        - `p75` number, nullable, required: Third-quartile displayed price. With `p25`, a range that ignores a stray accessory or parts listing.
      - `next_cursor` string, nullable, required: Send this as cursor, with page=next_page, to get the next page. Null on the last page.
      - `data` DepopListingsRow[], required
        - `id` string, required: The marketplace's listing ID.
        - `title` string, nullable, required: Depop's listing description, up to 2,000 characters.
        - `link` string, required: URL of the listing on the marketplace.
        - `promoted` boolean, nullable, required: Whether Depop marks the listing as boosted.
        - `displayed_price` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `displayed_price_text` string, nullable, required: The headline price as text, like $52.00, £24.75, A$50.00 or C$89.00.
        - `condition` string, nullable, required: Depop's condition code, like used_good.
        - `brand` string, nullable, required: The brand Depop shows, when there is one.
        - `size` string, nullable, required: The sizes available, when Depop lists them.
        - `location_text` string, nullable, required: The location Depop shows, when there is one.
        - `like_count` integer, nullable, required: How many Depop users have liked the listing. Null when Depop doesn't report it.
        - `image` string, nullable, required: Image URL on Depop's photo CDN.
        - `price_includes` string[], required: What the headline price includes: buyer_fee, shipping_price, tax, or a mix. An empty array means none of them.
    - `error` object
      - `code` 'page_mismatch' | 'schema' | 'network' | 'upstream' | 'throttled' | 'blocked' | 'rejected' | 'not_found' | 'filter_not_supported' | 'filter_not_applied' | 'location_not_served' | 'auth' | 'daily_limit' | 'deadline_exceeded' | 'credential_storage', required: Failed job code.
      - `message` string: What the code means, in plain words.
  - WhatnotListingsJob
    - `request_id` string, required: ID of this request. Poll it at /v1/jobs/{request_id}.
    - `status` 'pending' | 'complete' | 'failed', required: pending, complete or failed. Always check it, even on HTTP 200.
    - `credits` integer, required: Requests charged: 1 when complete, 0 for a page past the last one, while pending, or when failed.
    - `cached` boolean, required: True when the result came from the 15-minute cache.
    - `poll_url` string: Only while pending. A path like /v1/jobs/{id}: join it to https://api.soldgraph.com, not to the /v1 base URL.
    - `result` WhatnotListingsPage
      - `provider` string, required: Marketplace ID, like ebay or poshmark.
      - `country` string, required: The country searched: us, or on eBay the country you sent.
      - `query` string, required: The q you sent, with extra spaces removed.
      - `page` integer, required: The page you asked for.
      - `count` integer, required: Rows in result.data on this page.
      - `reported_total` integer, nullable, required: Always null: no reliable total is provided by this search.
      - `next_page` integer, nullable, required: Send this as page to get the next page. Null on the last page, and on page 100, the deepest page served.
      - `collected_at` string, required: When we collected the page, as an ISO 8601 timestamp.
      - `schema_version` integer, required: Version of the result's shape for that marketplace: 1 or 2. It only rises when a field changes meaning.
      - `completeness` string, required: provider_page_only: one page as the marketplace served it, not a full history. TCGplayer recent sales say recent_sample_only.
      - `field_notes` string, required: Plain-text notes on how to read this page's fields.
      - `page_size` integer, required: Source rows, including non-listing text dividers, before excluding unavailable inventory, sellers in another country and prices in another currency.
      - `summary` object, required: Price maths over the rows on this page: priced_count, currency, median, low, high. No row is removed from data. Rows with no single readable price are left out of the maths.
        - `priced_count` integer, required: Rows on this page that show one price.
        - `currency` string, required: Currency of the amounts below.
        - `median` number, nullable, required: Middle displayed price of those rows.
        - `low` number, nullable, required: Lowest displayed price.
        - `high` number, nullable, required: Highest displayed price.
        - `p25` number, nullable, required: First-quartile displayed price: a quarter of priced rows are at or below it.
        - `p75` number, nullable, required: Third-quartile displayed price. With `p25`, a range that ignores a stray accessory or parts listing.
      - `next_cursor` string, nullable, required: Send as cursor with page=next_page. Null at the end.
      - `data` WhatnotListingsRow[], required
        - `id` string, required: Whatnot opaque listing ID; use it to deduplicate across pages.
        - `title` string, required: Seller title, up to 2,000 characters.
        - `link` string, required: Public Whatnot listing URL.
        - `displayed_price` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `displayed_price_text` string, nullable, required: Formatted asking price or variant range, like $40.00 or C$189.00.
        - `condition` string, nullable, required: Seller-supplied condition, when present.
        - `image` string, nullable, required: Primary image on the Whatnot image CDN.
        - `quantity` integer, required: Available quantity reported by the source at collection time.
        - `listed_at` string, nullable, required: Source creation timestamp in UTC, when present. Not a sale timestamp.
        - `seller_text` string, nullable, required: Public seller username.
        - `grading_service` string, nullable, required: Seller-supplied grading service; not independently verified.
        - `grade` string, nullable, required: Seller-supplied grade; not independently verified.
        - `card_set` string, nullable, required: Seller-supplied card set, when present.
        - `card_number` string, nullable, required: Seller-supplied card number, when present.
        - `language` string, nullable, required: Seller-supplied language, when present.
    - `error` object
      - `code` 'page_mismatch' | 'schema' | 'network' | 'upstream' | 'throttled' | 'blocked' | 'rejected' | 'not_found' | 'filter_not_supported' | 'filter_not_applied' | 'location_not_served' | 'auth' | 'daily_limit' | 'deadline_exceeded' | 'credential_storage', required: Failed job code.
      - `message` string: What the code means, in plain words.
  - TcgplayerSearchJob
    - `request_id` string, required: ID of this request. Poll it at /v1/jobs/{request_id}.
    - `status` 'pending' | 'complete' | 'failed', required: pending, complete or failed. Always check it, even on HTTP 200.
    - `credits` integer, required: Requests charged: 1 when complete, 0 for a page past the last one, while pending, or when failed.
    - `cached` boolean, required: True when the result came from the 15-minute cache.
    - `poll_url` string: Only while pending. A path like /v1/jobs/{id}: join it to https://api.soldgraph.com, not to the /v1 base URL.
    - `result` TcgplayerSearchPage
      - `provider` string, required: Marketplace ID, like ebay or poshmark.
      - `country` string, required: The country searched: us, or on eBay the country you sent.
      - `query` string, required: The q you sent, with extra spaces removed.
      - `page` integer, required: The page you asked for.
      - `count` integer, required: Rows in result.data on this page.
      - `reported_total` integer, required: Source-reported result count for this response.
      - `next_page` integer, nullable, required: Send this as page to get the next page. Null on the last page, and on page 100, the deepest page served.
      - `collected_at` string, required: When we collected the page, as an ISO 8601 timestamp.
      - `schema_version` integer, required: Version of the result's shape for that marketplace: 1 or 2. It only rises when a field changes meaning.
      - `completeness` string, required: provider_page_only: one page as the marketplace served it, not a full history. TCGplayer recent sales say recent_sample_only.
      - `field_notes` string, required: Plain-text notes on how to read this page's fields.
      - `page_size` integer, required: Number of source rows in this response.
      - `summary` object, required: Price maths over market_price for the products on this page: priced_count, currency, median, low, high, p25 and p75. Products with no market price are left out of the maths, never removed from data.
        - `priced_count` integer, required: Rows on this page that show one price.
        - `currency` string, required: Currency of the amounts below.
        - `median` number, nullable, required: Middle displayed price of those rows.
        - `low` number, nullable, required: Lowest displayed price.
        - `high` number, nullable, required: Highest displayed price.
        - `p25` number, nullable, required: First-quartile displayed price: a quarter of priced rows are at or below it.
        - `p75` number, nullable, required: Third-quartile displayed price. With `p25`, a range that ignores a stray accessory or parts listing.
      - `next_cursor` string, nullable, required: Always null; use next_page for offset pagination.
      - `data` TcgplayerSearchRow[], required
        - `product_id` integer, required: Canonical TCGplayer product ID.
        - `name` string, required: Product title.
        - `link` string, required: Public product page.
        - `product_line` string, nullable, required: TCGplayer game or product line.
        - `set_name` string, nullable, required: Set name.
        - `set_code` string, nullable, required: Set code.
        - `card_number` string, nullable, required: Card number when supplied.
        - `rarity` string, nullable, required: Source rarity when supplied.
        - `market_price` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `lowest_ask` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `lowest_ask_with_shipping` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `listed_median` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `active_listing_count` integer, required: Source-reported number of active listings.
        - `offers` object[], required: Up to three current seller-offer snapshots with asking and shipping prices.
    - `error` object
      - `code` 'page_mismatch' | 'schema' | 'network' | 'upstream' | 'throttled' | 'blocked' | 'rejected' | 'not_found' | 'filter_not_supported' | 'filter_not_applied' | 'location_not_served' | 'auth' | 'daily_limit' | 'deadline_exceeded' | 'credential_storage', required: Failed job code.
      - `message` string: What the code means, in plain words.
  - TcgplayerSalesJob
    - `request_id` string, required: ID of this request. Poll it at /v1/jobs/{request_id}.
    - `status` 'pending' | 'complete' | 'failed', required: pending, complete or failed. Always check it, even on HTTP 200.
    - `credits` integer, required: Requests charged: 1 when complete, 0 for a page past the last one, while pending, or when failed.
    - `cached` boolean, required: True when the result came from the 15-minute cache.
    - `poll_url` string: Only while pending. A path like /v1/jobs/{id}: join it to https://api.soldgraph.com, not to the /v1 base URL.
    - `result` TcgplayerSalesPage
      - `provider` string, required: Marketplace ID, like ebay or poshmark.
      - `country` string, required: The country searched: us, or on eBay the country you sent.
      - `query` string, required: The q you sent, with extra spaces removed.
      - `page` integer, required: The page you asked for.
      - `count` integer, required: Rows in result.data on this page.
      - `reported_total` integer, required: Source-reported result count for this response.
      - `next_page` integer, nullable, required: Send this as page to get the next page. Null on the last page, and on page 100, the deepest page served.
      - `collected_at` string, required: When we collected the page, as an ISO 8601 timestamp.
      - `schema_version` integer, required: Version of the result's shape for that marketplace: 1 or 2. It only rises when a field changes meaning.
      - `completeness` string, required: provider_page_only: one page as the marketplace served it, not a full history. TCGplayer recent sales say recent_sample_only.
      - `field_notes` string, required: Plain-text notes on how to read this page's fields.
      - `product_id` integer, required: Exact TCGplayer product ID requested.
      - `page_size` integer, required: Number of source rows in this response.
      - `summary` object, required: Price maths over the sales on this page: priced_count, currency, median, low, high of purchase_price (the item price, without shipping), plus earliest_sold_date and latest_sold_date. Each sale counts once, whatever its quantity.
        - `priced_count` integer, required: Rows on this page that show one price.
        - `currency` string, required: Currency of the amounts below.
        - `median` number, nullable, required: Middle item price of those rows.
        - `low` number, nullable, required: Lowest item price.
        - `high` number, nullable, required: Highest item price.
        - `earliest_sold_date` string, nullable, required: Oldest sold date on this page.
        - `latest_sold_date` string, nullable, required: Newest sold date on this page.
        - `p25` number, nullable, required: First-quartile displayed price: a quarter of priced rows are at or below it.
        - `p75` number, nullable, required: Third-quartile displayed price. With `p25`, a range that ignores a stray accessory or parts listing.
      - `next_cursor` string, nullable, required: Always null; sales pagination is not exposed.
      - `data` TcgplayerSalesRow[], required
        - `product_id` integer, required: TCGplayer product ID.
        - `title` string, required: Product title from the sale row.
        - `condition` string, required: Condition sold.
        - `variant` string, required: Printing or variant sold.
        - `language` string, required: Language sold.
        - `quantity` integer, required: Quantity in transaction.
        - `purchase_price` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `shipping_price` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `total_price` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `sold_at` string, required: Transaction timestamp from source in UTC.
    - `error` object
      - `code` 'page_mismatch' | 'schema' | 'network' | 'upstream' | 'throttled' | 'blocked' | 'rejected' | 'not_found' | 'filter_not_supported' | 'filter_not_applied' | 'location_not_served' | 'auth' | 'daily_limit' | 'deadline_exceeded' | 'credential_storage', required: Failed job code.
      - `message` string: What the code means, in plain words.
  - OfferupListingsJob
    - `request_id` string, required: ID of this request. Poll it at /v1/jobs/{request_id}.
    - `status` 'pending' | 'complete' | 'failed', required: pending, complete or failed. Always check it, even on HTTP 200.
    - `credits` integer, required: Requests charged: 1 when complete, 0 for a page past the last one, while pending, or when failed.
    - `cached` boolean, required: True when the result came from the 15-minute cache.
    - `poll_url` string: Only while pending. A path like /v1/jobs/{id}: join it to https://api.soldgraph.com, not to the /v1 base URL.
    - `result` OfferupListingsPage
      - `provider` string, required: Marketplace ID, like ebay or poshmark.
      - `country` string, required: The country searched: us, or on eBay the country you sent.
      - `query` string, required: The q you sent, with extra spaces removed.
      - `page` integer, required: The page you asked for.
      - `count` integer, required: Rows returned: the page minus listings already returned on earlier pages of this search.
      - `reported_total` unknown, required
      - `next_page` integer, nullable, required: Send this as page to get the next page. Null on the last page, and on page 100, the deepest page served.
      - `collected_at` string, required: When we collected the page, as an ISO 8601 timestamp.
      - `schema_version` integer, required: Version of the result's shape for that marketplace: 1 or 2. It only rises when a field changes meaning.
      - `completeness` string, required: provider_page_only: one page as the marketplace served it, not a full history. TCGplayer recent sales say recent_sample_only.
      - `field_notes` string, required: Plain-text notes on how to read this page's fields.
      - `location` object, required: The search center as zip, latitude and longitude. Also radius_miles (applied), requested_radius_miles, and widened_radius_miles: the wider area OfferUp used for this page because nearby results ran out, else null.
      - `vehicle_search` boolean, required: True when OfferUp treated the search as cars and trucks. Vehicle radius options, filters and sorts apply only then.
      - `category_id` string, nullable, required: Category OfferUp applied, including one it picked from the keywords, such as 5.1 for "honda civic".
      - `page_size` integer, required: Listing rows on the source page, including repeats from earlier pages.
      - `summary` object, required: Price maths over the rows on this page: priced_count, currency, median, low, high. No row is removed from data. Rows with no single readable price are left out of the maths.
        - `priced_count` integer, required: Rows on this page that show one price.
        - `currency` string, required: Currency of the amounts below.
        - `median` number, nullable, required: Middle displayed price of those rows.
        - `low` number, nullable, required: Lowest displayed price.
        - `high` number, nullable, required: Highest displayed price.
        - `p25` number, nullable, required: First-quartile displayed price: a quarter of priced rows are at or below it.
        - `p75` number, nullable, required: Third-quartile displayed price. With `p25`, a range that ignores a stray accessory or parts listing.
      - `next_cursor` string, nullable, required: Send as cursor with page=next_page. Null at the end, when a page is mostly repeats, or after about 220 listings.
      - `data` OfferupListingsRow[], required
        - `id` string, required: OfferUp listing ID. Pass it to /v1/offerup/item for full details.
        - `title` string, required: Seller title, up to 2,000 characters.
        - `link` string, required: Public OfferUp listing URL.
        - `displayed_price` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `displayed_price_text` string, nullable, required: Formatted USD asking price.
        - `call_for_price` boolean, required: The listing shows "call for price", mostly dealer vehicles.
        - `firm_price` boolean, nullable, required: The seller marked the price firm, when the source says.
        - `condition` string, nullable, required: Condition label when search shows one. Usually null; the item endpoint always has condition.
        - `location_text` string, nullable, required: Seller-chosen area, such as Oakland, CA. Not an address.
        - `city` string, nullable, required: City from location_text when it reads "City, ST".
        - `state` string, nullable, required: Two-letter state from location_text.
        - `image` string, nullable, required: Thumbnail URL on the OfferUp image CDN.
        - `vehicle_miles` integer, nullable, required: Odometer reading shown on vehicle listings.
        - `promoted` boolean, required: A paid placement OfferUp mixed into the results.
        - `flags` string[], required: Raw source flags, such as LOCAL_PICKUP or CALL_FOR_PRICE.
    - `error` object
      - `code` 'page_mismatch' | 'schema' | 'network' | 'upstream' | 'throttled' | 'blocked' | 'rejected' | 'not_found' | 'filter_not_supported' | 'filter_not_applied' | 'location_not_served' | 'auth' | 'daily_limit' | 'deadline_exceeded' | 'credential_storage', required: Failed job code.
      - `message` string: What the code means, in plain words.
  - OfferupItemJob
    - `request_id` string, required: ID of this request. Poll it at /v1/jobs/{request_id}.
    - `status` 'pending' | 'complete' | 'failed', required: pending, complete or failed. Always check it, even on HTTP 200.
    - `credits` integer, required: Requests charged: 1 when complete, 0 for a page past the last one, while pending, or when failed.
    - `cached` boolean, required: True when the result came from the 15-minute cache.
    - `poll_url` string: Only while pending. A path like /v1/jobs/{id}: join it to https://api.soldgraph.com, not to the /v1 base URL.
    - `result` OfferupItemPage
      - `provider` string, required: Marketplace ID, like ebay or poshmark.
      - `country` string, required: The country searched: us, or on eBay the country you sent.
      - `query` string, required: The q you sent, with extra spaces removed.
      - `page` integer, required: The page you asked for.
      - `count` integer, required: Rows in result.data on this page.
      - `reported_total` integer, required: Total matches the marketplace reports for the search. It may be rounded or capped.
      - `next_page` integer, nullable, required: Send this as page to get the next page. Null on the last page, and on page 100, the deepest page served.
      - `collected_at` string, required: When we collected the page, as an ISO 8601 timestamp.
      - `schema_version` integer, required: Version of the result's shape for that marketplace: 1 or 2. It only rises when a field changes meaning.
      - `completeness` string, required: provider_page_only: one page as the marketplace served it, not a full history. TCGplayer recent sales say recent_sample_only.
      - `field_notes` string, required: Plain-text notes on how to read this page's fields.
      - `data` OfferupItemRow, required
        - `id` string, required: OfferUp listing ID.
        - `item_number` string, required: OfferUp numeric item number. Also accepted as q.
        - `title` string, nullable, required: The listing's title.
        - `link` string, required: The listing's page on OfferUp.
        - `status` string, required: active, pending, sold, removed or another lowercase source state. The seller sets it: sold is not a verified sale, and its price is not a sale price.
        - `description` string, nullable, required: Seller description, up to 10,000 characters.
        - `displayed_price` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `original_price` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `condition` string, nullable, required: new, open_box, refurbished, used, for_parts or other. condition_code is the raw source number.
        - `condition_code` integer, nullable, required: OfferUp's own numeric code for the condition, like 40 for used.
        - `posted_at` string, nullable, required: When the listing was posted, in UTC.
        - `edited_at` string, nullable, required: Last seller edit in UTC, when present.
        - `quantity` integer, nullable, required: How many the seller has for sale.
        - `firm_price` boolean, nullable, required: True when the seller marked the price as firm.
        - `location` object, required: Public listing area as { name, latitude, longitude }. Approximate, not an address.
        - `local_pickup` boolean, nullable, required: Local pickup is offered.
        - `shipping` object, required: available, price (a USD object or null), seller_pays and buy_now.
        - `category` object, required: Category id, and path names from the top level down.
        - `photos` string[], required: Full-size photo URLs on the OfferUp image CDN.
        - `seller` object, required: Public profile: id, name, joined_at, items_sold, rating_average, rating_count, business, auto_dealer and truyou_verified.
        - `vehicle` object, nullable, required: For Vehicles listings: year, make, model, trim, miles, vin, title_status, transmission, drivetrain, fuel_type, color and body. Seller supplied.
    - `error` object
      - `code` 'page_mismatch' | 'schema' | 'network' | 'upstream' | 'throttled' | 'blocked' | 'rejected' | 'not_found' | 'filter_not_supported' | 'filter_not_applied' | 'location_not_served' | 'auth' | 'daily_limit' | 'deadline_exceeded' | 'credential_storage', required: Failed job code.
      - `message` string: What the code means, in plain words.
  - FacebookListingsJob
    - `request_id` string, required: ID of this request. Poll it at /v1/jobs/{request_id}.
    - `status` 'pending' | 'complete' | 'failed', required: pending, complete or failed. Always check it, even on HTTP 200.
    - `credits` integer, required: Requests charged: 1 when complete, 0 for a page past the last one, while pending, or when failed.
    - `cached` boolean, required: True when the result came from the 15-minute cache.
    - `poll_url` string: Only while pending. A path like /v1/jobs/{id}: join it to https://api.soldgraph.com, not to the /v1 base URL.
    - `result` FacebookListingsPage
      - `provider` string, required: Marketplace ID, like ebay or poshmark.
      - `country` string, required: The country searched: us, or on eBay the country you sent.
      - `query` string, required: The q you sent, with extra spaces removed.
      - `page` integer, required: The page you asked for.
      - `count` integer, required: Rows returned: the page minus sold or hidden listings and listings outside your radius.
      - `reported_total` unknown, required
      - `next_page` unknown, required
      - `collected_at` string, required: When we collected the page, as an ISO 8601 timestamp.
      - `schema_version` integer, required: Version of the result's shape for that marketplace: 1 or 2. It only rises when a field changes meaning.
      - `completeness` string, required: provider_page_only: one page as the marketplace served it, not a full history. TCGplayer recent sales say recent_sample_only.
      - `field_notes` string, required: Plain-text notes on how to read this page's fields.
      - `location` object, required: The search center as zip, latitude and longitude, your radius_miles, the Facebook city searched as source_city (id, name, state, latitude, longitude, distance_miles from your point), and source_radius_km, the radius sent to Facebook, widened to cover your circle from that city.
      - `page_size` integer, required: Listing rows on the source page.
      - `summary` object, required: Price maths over the rows on this page: priced_count, currency, median, low, high. No row is removed from data. Rows with no single readable price are left out of the maths.
        - `priced_count` integer, required: Rows on this page that show one price.
        - `currency` string, required: Currency of the amounts below.
        - `median` number, nullable, required: Middle displayed price of those rows.
        - `low` number, nullable, required: Lowest displayed price.
        - `high` number, nullable, required: Highest displayed price.
        - `p25` number, nullable, required: First-quartile displayed price: a quarter of priced rows are at or below it.
        - `p75` number, nullable, required: Third-quartile displayed price. With `p25`, a range that ignores a stray accessory or parts listing.
      - `data` FacebookListingsRow[], required
        - `id` string, required: Facebook Marketplace item ID. Pass it to /v1/facebook/item for full details.
        - `title` string, required: Seller title, up to 2,000 characters.
        - `link` string, required: Public Facebook Marketplace listing URL.
        - `pending` boolean, required: True when the seller marked a sale in progress. Sold listings are left out.
        - `displayed_price` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `displayed_price_text` string, required: Formatted USD asking price.
        - `original_price` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `condition` unknown, required
        - `city` string, nullable, required: Seller-chosen city.
        - `state` string, nullable, required: Two-letter state code.
        - `city_id` string, nullable, required: Facebook city page ID for that city.
        - `approx_distance_miles` number, nullable, required: Miles from your search point to the listing's city, not to the item. Null when the city is not in our place table.
        - `listed_at` string, nullable, required: When the listing was posted, in UTC.
        - `delivery` object, required: local_pickup and shipping booleans from the listing's delivery options.
        - `category_id` string, nullable, required: Facebook Marketplace category ID.
        - `image` string, nullable, required: Primary photo on Facebook's CDN. The link is signed and expires after some days.
    - `error` object
      - `code` 'page_mismatch' | 'schema' | 'network' | 'upstream' | 'throttled' | 'blocked' | 'rejected' | 'not_found' | 'filter_not_supported' | 'filter_not_applied' | 'location_not_served' | 'auth' | 'daily_limit' | 'deadline_exceeded' | 'credential_storage', required: Failed job code.
      - `message` string: What the code means, in plain words.
  - FacebookItemJob
    - `request_id` string, required: ID of this request. Poll it at /v1/jobs/{request_id}.
    - `status` 'pending' | 'complete' | 'failed', required: pending, complete or failed. Always check it, even on HTTP 200.
    - `credits` integer, required: Requests charged: 1 when complete, 0 for a page past the last one, while pending, or when failed.
    - `cached` boolean, required: True when the result came from the 15-minute cache.
    - `poll_url` string: Only while pending. A path like /v1/jobs/{id}: join it to https://api.soldgraph.com, not to the /v1 base URL.
    - `result` FacebookItemPage
      - `provider` string, required: Marketplace ID, like ebay or poshmark.
      - `country` string, required: The country searched: us, or on eBay the country you sent.
      - `query` string, required: The q you sent, with extra spaces removed.
      - `page` integer, required: The page you asked for.
      - `count` integer, required: Rows in result.data on this page.
      - `reported_total` integer, required: Total matches the marketplace reports for the search. It may be rounded or capped.
      - `next_page` integer, nullable, required: Send this as page to get the next page. Null on the last page, and on page 100, the deepest page served.
      - `collected_at` string, required: When we collected the page, as an ISO 8601 timestamp.
      - `schema_version` integer, required: Version of the result's shape for that marketplace: 1 or 2. It only rises when a field changes meaning.
      - `completeness` string, required: provider_page_only: one page as the marketplace served it, not a full history. TCGplayer recent sales say recent_sample_only.
      - `field_notes` string, required: Plain-text notes on how to read this page's fields.
      - `data` FacebookItemRow, required
        - `id` string, required: Facebook Marketplace item ID.
        - `title` string, nullable, required: The listing's title.
        - `link` string, required: The listing's page on Facebook Marketplace.
        - `status` string, required: active, pending, sold or unavailable. The seller sets it: sold is not a verified sale, and its price is not a sale price. A deleted listing fails with not_found and costs nothing.
        - `description` string, nullable, required: Seller description, up to 10,000 characters.
        - `displayed_price` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `original_price` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `condition` string, nullable, required: new, used_like_new, used_good, used_fair or another source value, as the seller chose.
        - `listed_at` string, nullable, required: When the listing was posted, in UTC.
        - `location` object, required: name (city, state), approximate latitude and longitude, and city_id. Not an address.
        - `delivery` object, required: local_pickup, shipping, shipping_offered and shipping_price_text as Facebook shows it.
        - `category` object, required: Category id and slug, such as bicycles.
        - `photos` string[], required: Photo URLs on Facebook's CDN, in listing order. Signed links that expire.
    - `error` object
      - `code` 'page_mismatch' | 'schema' | 'network' | 'upstream' | 'throttled' | 'blocked' | 'rejected' | 'not_found' | 'filter_not_supported' | 'filter_not_applied' | 'location_not_served' | 'auth' | 'daily_limit' | 'deadline_exceeded' | 'credential_storage', required: Failed job code.
      - `message` string: What the code means, in plain words.
  - VintedListingsJob
    - `request_id` string, required: ID of this request. Poll it at /v1/jobs/{request_id}.
    - `status` 'pending' | 'complete' | 'failed', required: pending, complete or failed. Always check it, even on HTTP 200.
    - `credits` integer, required: Requests charged: 1 when complete, 0 for a page past the last one, while pending, or when failed.
    - `cached` boolean, required: True when the result came from the 15-minute cache.
    - `poll_url` string: Only while pending. A path like /v1/jobs/{id}: join it to https://api.soldgraph.com, not to the /v1 base URL.
    - `result` VintedListingsPage
      - `provider` string, required: Marketplace ID, like ebay or poshmark.
      - `country` string, required: The country searched: us, or on eBay the country you sent.
      - `query` string, required: The q you sent, with extra spaces removed.
      - `page` integer, required: The page you asked for.
      - `count` integer, required: Rows returned. Every row on the source page is returned.
      - `reported_total` integer, required: Matches as Vinted reports them. Vinted stops counting at 960, so 960 means "960 or more".
      - `next_page` integer, nullable, required: The next page number, or null on the last page. Never more than 10.
      - `collected_at` string, required: When we collected the page, as an ISO 8601 timestamp.
      - `schema_version` integer, required: Version of the result's shape for that marketplace: 1 or 2. It only rises when a field changes meaning.
      - `completeness` string, required: provider_page_only: one page as the marketplace served it, not a full history. TCGplayer recent sales say recent_sample_only.
      - `field_notes` string, required: Plain-text notes on how to read this page's fields.
      - `page_size` integer, required: Listing rows on the source page, up to 96.
      - `summary` object, required: Price maths over the rows on this page: priced_count, currency, median, low, high. No row is removed from data. Rows with no single readable price are left out of the maths.
        - `priced_count` integer, required: Rows on this page that show one price.
        - `currency` string, required: Currency of the amounts below.
        - `median` number, nullable, required: Middle displayed price of those rows.
        - `low` number, nullable, required: Lowest displayed price.
        - `high` number, nullable, required: Highest displayed price.
        - `p25` number, nullable, required: First-quartile displayed price: a quarter of priced rows are at or below it.
        - `p75` number, nullable, required: Third-quartile displayed price. With `p25`, a range that ignores a stray accessory or parts listing.
      - `data` VintedListingsRow[], required
        - `id` string, required: Vinted item ID. Pass it to /v1/vinted/item for full details.
        - `title` string, required: Seller title, up to 2,000 characters.
        - `link` string, required: Public listing URL on the Vinted site you searched.
        - `promoted` boolean, required: True for a paid placement. Vinted mixes these into best_match results.
        - `displayed_price` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `displayed_price_text` string, required: Formatted item price, like $14.00, £42.54, €25.00 or PLN 45.00.
        - `original_price` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `buyer_protection_fee` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `total_price` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `condition` string, nullable, required: new_with_tags, new_without_tags, very_good, good or satisfactory, as the seller chose, in the same codes on every site. Null if Vinted shows another value.
        - `brand` string, nullable, required: Brand name as shown on the listing card.
        - `size` string, nullable, required: Size as shown, like M / US 8-10 or 10. Null for items without sizes.
        - `like_count` integer, nullable, required: How many members have favourited the listing.
        - `business_seller` boolean, required: True when the seller is a registered business (Vinted Pro).
        - `image` string, nullable, required: Main photo on Vinted's CDN. The link is signed and expires.
    - `error` object
      - `code` 'page_mismatch' | 'schema' | 'network' | 'upstream' | 'throttled' | 'blocked' | 'rejected' | 'not_found' | 'filter_not_supported' | 'filter_not_applied' | 'location_not_served' | 'auth' | 'daily_limit' | 'deadline_exceeded' | 'credential_storage', required: Failed job code.
      - `message` string: What the code means, in plain words.
  - VintedItemJob
    - `request_id` string, required: ID of this request. Poll it at /v1/jobs/{request_id}.
    - `status` 'pending' | 'complete' | 'failed', required: pending, complete or failed. Always check it, even on HTTP 200.
    - `credits` integer, required: Requests charged: 1 when complete, 0 for a page past the last one, while pending, or when failed.
    - `cached` boolean, required: True when the result came from the 15-minute cache.
    - `poll_url` string: Only while pending. A path like /v1/jobs/{id}: join it to https://api.soldgraph.com, not to the /v1 base URL.
    - `result` VintedItemPage
      - `provider` string, required: Marketplace ID, like ebay or poshmark.
      - `country` string, required: The country searched: us, or on eBay the country you sent.
      - `query` string, required: The q you sent, with extra spaces removed.
      - `page` integer, required: The page you asked for.
      - `count` integer, required: Rows in result.data on this page.
      - `reported_total` integer, required: Total matches the marketplace reports for the search. It may be rounded or capped.
      - `next_page` integer, nullable, required: Send this as page to get the next page. Null on the last page, and on page 100, the deepest page served.
      - `collected_at` string, required: When we collected the page, as an ISO 8601 timestamp.
      - `schema_version` integer, required: Version of the result's shape for that marketplace: 1 or 2. It only rises when a field changes meaning.
      - `completeness` string, required: provider_page_only: one page as the marketplace served it, not a full history. TCGplayer recent sales say recent_sample_only.
      - `field_notes` string, required: Plain-text notes on how to read this page's fields.
      - `data` VintedItemRow, required
        - `id` string, required: Vinted item ID.
        - `title` string, required: The listing's title.
        - `description` string, nullable, required: Seller description, up to 10,000 characters.
        - `link` string, required: The listing's page on Vinted.
        - `status` string, required: active, reserved or unavailable. unavailable covers sold, hidden and removed items: it is not a verified sale. A deleted listing fails with not_found and costs nothing.
        - `displayed_price` Money, required
          - `amount` number, required
          - `currency` string, required: ISO 4217 code, like USD.
        - `condition` string, nullable, required: new_with_tags, new_without_tags, very_good, good or satisfactory, as the seller chose.
        - `brand` string, nullable, required: Brand name.
        - `brand_id` integer, nullable, required: Vinted brand ID. Use it as brand_id on /v1/vinted/listings.
        - `size` string, nullable, required: Size as shown. Null for items without sizes.
        - `color` string, nullable, required: Colours as shown, like Grey, Black.
        - `uploaded_text` string, nullable, required: When it was listed, in Vinted's own words, like 2 days ago. Vinted shows no exact date.
        - `like_count` integer, nullable, required: How many members have favourited the listing.
        - `category` object, required: Category id (use it as category_id on /v1/vinted/listings) and path, the category names from the top down.
        - `photos` string[], required: Photo URLs on Vinted's CDN, in listing order. Signed links that expire.
        - `seller` object, required: Public seller details: name (username), business, review_count and rating out of 5 (null with no reviews).
    - `error` object
      - `code` 'page_mismatch' | 'schema' | 'network' | 'upstream' | 'throttled' | 'blocked' | 'rejected' | 'not_found' | 'filter_not_supported' | 'filter_not_applied' | 'location_not_served' | 'auth' | 'daily_limit' | 'deadline_exceeded' | 'credential_storage', required: Failed job code.
      - `message` string: What the code means, in plain words.

## Other responses

- `401`: invalid_api_key: The API key is missing, malformed or revoked.
- `403`: origin_not_allowed: A browser sent the request from a site that isn't allowed. Call the API from your server.
- `404`: not_found: No such path. request_not_found: The job ID is well-formed but unknown, or belongs to another account. An ID that isn't a UUID is no such path: 404 not_found.
- `405`: method_not_allowed: Wrong method for this route. Searches, jobs and usage use GET. Only /v1/batches takes POST.
- `414`: uri_too_long: The query string is longer than 2,048 characters.
- `422`: invalid_wait: wait must be a whole number from 0 to 20.
- `429`: rate_limited: More than 60 API calls this minute for your account.
- `503`: storage_unavailable: Our database is briefly unavailable. origin_unavailable: The edge couldn't reach our API server. service_unconfigured: The API is misconfigured on our side. Contact support.

---

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