{
  "openapi": "3.0.1",
  "info": {
    "title": "OfferUp Scraper: Resale Data for Any US ZIP",
    "description": "Live OfferUp resale data from any US ZIP code you choose: keyword listing search, full item details, seller inventory, profiles, sold comps, and instant Slack or JSON deal alerts. Pick your market, then stream structured JSON to your dataset in seconds.",
    "version": "0.0",
    "x-build-id": "RNFc2HmTgS2kiehKs"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/b2b_leads~OfferUp-Real-Time-Data-Scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-b2b_leads-OfferUp-Real-Time-Data-Scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/b2b_leads~OfferUp-Real-Time-Data-Scraper/runs": {
      "post": {
        "operationId": "runs-sync-b2b_leads-OfferUp-Real-Time-Data-Scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/b2b_leads~OfferUp-Real-Time-Data-Scraper/run-sync": {
      "post": {
        "operationId": "run-sync-b2b_leads-OfferUp-Real-Time-Data-Scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "enableListingSearch": {
            "title": "Listing Search",
            "type": "boolean",
            "description": "Live keyword search across OfferUp — thrift brands, streetwear, workwear, and vintage finds. On by default and prefilled so you can click Start and get results in seconds.",
            "default": true
          },
          "searchKeywords": {
            "title": "Search keywords",
            "type": "array",
            "description": "One or more search terms, e.g. \"carhartt detroit jacket\", \"vintage 90s levis 501\", \"patagonia fleece\", \"mid century lamp\". Required when Listing Search is on.",
            "default": [
              "carhartt detroit jacket",
              "vintage 90s levis 501",
              "patagonia fleece"
            ],
            "items": {
              "type": "string"
            }
          },
          "searchMaxResults": {
            "title": "Max results per keyword",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Maximum listings to return for each keyword (1–200). Default 10 — perfect for instant demo runs.",
            "default": 10
          },
          "searchSort": {
            "title": "Sort order",
            "enum": [
              "relevance",
              "newest",
              "price_low_to_high",
              "price_high_to_low",
              "distance"
            ],
            "type": "string",
            "description": "\"Just listed\" is ideal for deal alerts on fresh inventory; \"Closest first\" is best for local pickup flips.",
            "default": "relevance"
          },
          "searchCategory": {
            "title": "Category",
            "enum": [
              "",
              "1",
              "2",
              "3",
              "4",
              "5",
              "6"
            ],
            "type": "string",
            "description": "Limit the search to a top-level OfferUp category.",
            "default": ""
          },
          "searchCondition": {
            "title": "Condition",
            "enum": [
              "",
              "NEW",
              "OPEN_BOX",
              "REFURBISHED",
              "USED",
              "BROKEN",
              "OTHER"
            ],
            "type": "string",
            "description": "Filter by item condition — the same condition values OfferUp sellers pick when posting.",
            "default": ""
          },
          "searchMinPrice": {
            "title": "Min price (optional)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Minimum listing price in USD."
          },
          "searchMaxPrice": {
            "title": "Max price (optional)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Maximum listing price — pair with \"Just listed\" sort to catch underpriced steals fast."
          },
          "searchLocation": {
            "title": "Target location (optional)",
            "type": "string",
            "description": "Pick your market by ZIP code. Prefilled with 10001 (New York) so the demo run returns real, local listings right away — replace it with your own ZIP, or clear it to search the connection's own area instead. Enter any 5-digit US ZIP code — the city you source, flip, or resell in — and every keyword search returns listings from that area. More ZIPs to try: 90210 Los Angeles, 60601 Chicago, 78701 Austin, 33139 Miami Beach, 85004 Phoenix, 97209 Portland, 30303 Atlanta, 19103 Philadelphia. 'Local distance' below is measured from this ZIP, so 10001 + 10 miles gives New York City listings while 90210 + 10 miles gives Los Angeles listings. Use a ZIP rather than a city name — a ZIP always pins to a real market — and note a ZIP+4 like 90210-1234 also works. The run log names the area it locked onto, e.g. 'Target area resolved: Beverly Hills, CA 90210', so you can confirm it before reading the dataset.",
            "default": "10001"
          },
          "searchRadius": {
            "title": "Local distance",
            "enum": [
              "5",
              "10",
              "20",
              "30",
              "50"
            ],
            "type": "string",
            "description": "How far out from your Target location above to search. If no Target location is set, it is measured from the connection's own area. OfferUp is a local marketplace, so wider distances find more inventory — Maximum (50 miles) is the default.",
            "default": "50"
          },
          "searchFetchFullDetails": {
            "title": "Enrich with full listing details",
            "type": "boolean",
            "description": "When on, each search result stays ONE row (featureType listing_search, detailsFetched=true) but is enriched with the full description, condition, item specifics, view count, photo gallery, shipping options, and seller details. Adds a little extra time per listing. When off, you get fast search cards with price, title, image, condition, and local area. Every discovered item is always saved — never filtered out.",
            "default": false
          },
          "enableListingDetails": {
            "title": "Listing Details",
            "type": "boolean",
            "description": "Fetch the full record for specific OfferUp listings by URL or listing ID.",
            "default": false
          },
          "listingIds": {
            "title": "Listing IDs (optional)",
            "type": "array",
            "description": "OfferUp listing IDs, e.g. fd27264b-4ff8-31e4-af7c-8694782e253b.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "listingUrls": {
            "title": "Listing URLs (optional)",
            "type": "array",
            "description": "Full OfferUp item URLs (https://offerup.com/item/detail/...).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "enableSellerListings": {
            "title": "Seller Listings",
            "type": "boolean",
            "description": "Collect the full active inventory of any seller, thrift shop, or liquidator on OfferUp — track competitor stock and repricing moves.",
            "default": false
          },
          "sellerIds": {
            "title": "Seller IDs",
            "type": "array",
            "description": "OfferUp seller IDs (the numeric id in a seller's profile URL, e.g. 91145407). Shared by Seller Listings, Seller Profile, and Sold Comps. Tip: a seller ID is included on every listing row this Actor exports.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "sellerMaxListings": {
            "title": "Max listings per seller",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum active listings to collect per seller (1–500).",
            "default": 30
          },
          "enableSellerProfile": {
            "title": "Seller Profile",
            "type": "boolean",
            "description": "Extract seller stats: display name, verification, follower count, local area, and inventory size.",
            "default": false
          },
          "enableSoldHistory": {
            "title": "Sold Item Comps / History",
            "type": "boolean",
            "description": "Collect sold and completed listings for real market comps, resale margins, and sell-through analysis. OfferUp keeps a live inventory, so sold history is collected from sold-state listings on a seller's inventory plus any sold listing URLs/IDs you provide.",
            "default": false
          },
          "soldMaxItems": {
            "title": "Max sold items per seller",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum sold listings to check per seller (1–500).",
            "default": 30
          },
          "enableScrapeByUrl": {
            "title": "Scrape By URL",
            "type": "boolean",
            "description": "Paste any OfferUp URL — search results, category page, seller inventory, or a single item listing.",
            "default": false
          },
          "scrapeUrls": {
            "title": "OfferUp URLs",
            "type": "array",
            "description": "Any OfferUp search, category, seller, or item URL.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Optional. Every record is always saved to the run dataset — this webhook is an ADDITIONAL real-time push. Each new row is also POSTed to this URL (Slack, Discord, Zapier, Make, n8n, custom pricing bot).",
            "default": ""
          },
          "webhookFormat": {
            "title": "Webhook format",
            "enum": [
              "json",
              "slack"
            ],
            "type": "string",
            "description": "json = full record object; slack = Slack-friendly message payload.",
            "default": "json"
          },
          "proxyConfiguration": {
            "title": "Proxy settings",
            "type": "object",
            "description": "Residential connections recommended — OfferUp localizes results by region, and residential connections deliver the most reliable results at scale.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "US"
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}