Properties
| Name | Type | Description |
|---|---|---|
| request_id | string | ID of this request. Poll it at /v1/jobs/{request_id}. |
| status | string | pending, complete or failed. Always check it, even on HTTP 200. |
| credits | integer | Requests charged: 1 when complete, 0 for a page past the last one, while pending, or when failed. |
| cached | boolean | 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 | object | |
| error | object |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/soldgraph-com/json-schema/soldgraph-com-offerup-listings-job-schema.json",
"title": "OfferupListingsJob",
"x-generated": "2026-10-31",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/soldgraph-com-openapi.json#/components/schemas/OfferupListingsJob",
"type": "object",
"required": [
"request_id",
"status",
"credits",
"cached"
],
"properties": {
"request_id": {
"type": "string",
"description": "ID of this request. Poll it at /v1/jobs/{request_id}."
},
"status": {
"type": "string",
"description": "pending, complete or failed. Always check it, even on HTTP 200.",
"enum": [
"pending",
"complete",
"failed"
]
},
"credits": {
"type": "integer",
"description": "Requests charged: 1 when complete, 0 for a page past the last one, while pending, or when failed."
},
"cached": {
"type": "boolean",
"description": "True when the result came from the 15-minute cache."
},
"poll_url": {
"type": "string",
"description": "Only while pending. A path like /v1/jobs/{id}: join it to https://api.soldgraph.com, not to the /v1 base URL."
},
"result": {
"$ref": "#/$defs/OfferupListingsPage"
},
"error": {
"type": "object",
"required": [
"code"
],
"properties": {
"code": {
"type": "string",
"enum": [
"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"
],
"description": "Failed job code."
},
"message": {
"type": "string",
"description": "What the code means, in plain words."
}
}
}
},
"$defs": {
"Money": {
"type": "object",
"required": [
"amount",
"currency"
],
"properties": {
"amount": {
"type": "number"
},
"currency": {
"type": "string",
"description": "ISO 4217 code, like USD."
}
}
},
"OfferupListingsPage": {
"type": "object",
"required": [
"provider",
"country",
"query",
"page",
"count",
"reported_total",
"next_page",
"collected_at",
"schema_version",
"completeness",
"field_notes",
"location",
"vehicle_search",
"category_id",
"page_size",
"summary",
"count",
"next_cursor",
"reported_total",
"data"
],
"properties": {
"provider": {
"type": "string",
"description": "Marketplace ID, like ebay or poshmark."
},
"country": {
"type": "string",
"description": "The country searched: us, or on eBay the country you sent."
},
"query": {
"type": "string",
"description": "The q you sent, with extra spaces removed."
},
"page": {
"type": "integer",
"description": "The page you asked for."
},
"count": {
"type": "integer",
"description": "Rows returned: the page minus listings already returned on earlier pages of this search."
},
"reported_total": {
"type": "null",
"description": "Always null: OfferUp does not report a total."
},
"next_page": {
"type": [
"integer",
"null"
],
"description": "Send this as page to get the next page. Null on the last page, and on page 100, the deepest page served."
},
"collected_at": {
"type": "string",
"description": "When we collected the page, as an ISO 8601 timestamp."
},
"schema_version": {
"type": "integer",
"description": "Version of the result's shape for that marketplace: 1 or 2. It only rises when a field changes meaning."
},
"completeness": {
"type": "string",
"description": "provider_page_only: one page as the marketplace served it, not a full history. TCGplayer recent sales say recent_sample_only."
},
"field_notes": {
"type": "string",
"description": "Plain-text notes on how to read this page's fields."
},
"location": {
"type": "object",
"description": "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": {
"type": "boolean",
"description": "True when OfferUp treated the search as cars and trucks. Vehicle radius options, filters and sorts apply only then."
},
"category_id": {
"type": [
"string",
"null"
],
"description": "Category OfferUp applied, including one it picked from the keywords, such as 5.1 for \"honda civic\"."
},
"page_size": {
"type": "integer",
"description": "Listing rows on the source page, including repeats from earlier pages."
},
"summary": {
"type": "object",
"properties": {
"priced_count": {
"type": "integer",
"description": "Rows on this page that show one price."
},
"currency": {
"type": "string",
"description": "Currency of the amounts below."
},
"median": {
"type": [
"number",
"null"
],
"description": "Middle displayed price of those rows."
},
"low": {
"type": [
"number",
"null"
],
"description": "Lowest displayed price."
},
"high": {
"type": [
"number",
"null"
],
"description": "Highest displayed price."
},
"p25": {
"type": [
"number",
"null"
],
"description": "First-quartile displayed price: a quarter of priced rows are at or below it."
},
"p75": {
"type": [
"number",
"null"
],
"description": "Third-quartile displayed price. With `p25`, a range that ignores a stray accessory or parts listing."
}
},
"required": [
"priced_count",
"currency",
"median",
"low",
"high",
"p25",
"p75"
],
"description": "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."
},
"next_cursor": {
"type": [
"string",
"null"
],
"description": "Send as cursor with page=next_page. Null at the end, when a page is mostly repeats, or after about 220 listings."
},
"data": {
"type": "array",
"items": {
"$ref": "#/$defs/OfferupListingsRow"
}
}
}
},
"OfferupListingsRow": {
"type": "object",
"required": [
"id",
"title",
"link",
"displayed_price",
"displayed_price_text",
"call_for_price",
"firm_price",
"condition",
"location_text",
"city",
"state",
"image",
"vehicle_miles",
"promoted",
"flags"
],
"properties": {
"id": {
"type": "string",
"description": "OfferUp listing ID. Pass it to /v1/offerup/item for full details."
},
"title": {
"type": "string",
"description": "Seller title, up to 2,000 characters."
},
"link": {
"type": "string",
"description": "Public OfferUp listing URL."
},
"displayed_price": {
"oneOf": [
{
"$ref": "#/$defs/Money"
},
{
"type": "null"
}
],
"description": "USD asking price as { amount, currency }. Null when the seller asks buyers to call. Never a sale price."
},
"displayed_price_text": {
"type": [
"string",
"null"
],
"description": "Formatted USD asking price."
},
"call_for_price": {
"type": "boolean",
"description": "The listing shows \"call for price\", mostly dealer vehicles."
},
"firm_price": {
"type": [
"boolean",
"null"
],
"description": "The seller marked the price firm, when the source says."
},
"condition": {
"type": [
"string",
"null"
],
"description": "Condition label when search shows one. Usually null; the item endpoint always has condition."
},
"location_text": {
"type": [
"string",
"null"
],
"description": "Seller-chosen area, such as Oakland, CA. Not an address."
},
"city": {
"type": [
"string",
"null"
],
"description": "City from location_text when it reads \"City, ST\"."
},
"state": {
"type": [
"string",
"null"
],
"description": "Two-letter state from location_text."
},
"image": {
"type": [
"string",
"null"
],
"description": "Thumbnail URL on the OfferUp image CDN."
},
"vehicle_miles": {
"type": [
"integer",
"null"
],
"description": "Odometer reading shown on vehicle listings."
},
"promoted": {
"type": "boolean",
"description": "A paid placement OfferUp mixed into the results."
},
"flags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Raw source flags, such as LOCAL_PICKUP or CALL_FOR_PRICE."
}
}
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/soldgraph-com-offerup-listings-job"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.