{
  "openapi": "3.0.1",
  "info": {
    "title": "eBay: Active & Sold Listings, Prices & Analytics (17 Markets)",
    "description": "Scrape eBay active & sold listings across 17 marketplaces. Search by keyword or URL — get prices, sold price & date, sell-through rate, condition, shipping, item specifics, identifiers (UPC/MPN), images & seller details. Fast/full-detail modes + change monitoring",
    "version": "0.0",
    "x-build-id": "Zb4JevBAl9JCdvsjk"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~ebay-search-scraper-ppe/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-ebay-search-scraper-ppe",
        "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/memo23~ebay-search-scraper-ppe/runs": {
      "post": {
        "operationId": "runs-sync-memo23-ebay-search-scraper-ppe",
        "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/memo23~ebay-search-scraper-ppe/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-ebay-search-scraper-ppe",
        "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": {
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "eBay URLs to scrape. Supports keyword/filter search pages (<code>/sch/i.html?_nkw=...</code>), seller pages (<code>/usr/&lt;seller&gt;</code>), store pages (<code>/str/&lt;store&gt;</code>) and single item pages (<code>/itm/&lt;id&gt;</code>) — on any supported marketplace domain (.com, .co.uk, .de, .fr, .it, .es, .ca, .com.au). Leave empty if you use the <b>Search query</b> field instead.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "detailedItems": {
            "title": "Fetch full item details (active listings)",
            "type": "boolean",
            "description": "When ON (default), each ACTIVE listing's item page is fetched for item specifics, full description, gallery images and seller details — richer, but ~3× more requests. When OFF, active listings are returned straight from the search results (price, condition, shipping, image, availability) — much faster and cheaper. Sold listings are always returned from search results regardless of this setting.",
            "default": true
          },
          "searchQuery": {
            "title": "Search query",
            "type": "string",
            "description": "Keyword(s) to search, e.g. \"iphone 16 pro 256gb\". Supports eBay search syntax (quotes for exact match, minus to exclude). Leave empty if you provided Start URLs."
          },
          "marketplace": {
            "title": "Marketplace",
            "enum": [
              "ebay.com",
              "ebay.co.uk",
              "ebay.de",
              "ebay.fr",
              "ebay.it",
              "ebay.es",
              "ebay.ca",
              "ebay.com.au",
              "ebay.nl",
              "ebay.at",
              "ebay.ch",
              "ebay.ie",
              "ebay.pl",
              "ebay.com.hk",
              "ebay.com.my",
              "ebay.ph",
              "ebay.com.sg"
            ],
            "type": "string",
            "description": "Which eBay regional site to scrape (affects currency, language and inventory). Applies to keyword searches and to pasted <code>ebay.com</code> URLs; a regional domain in a pasted URL (e.g. ebay.co.uk) always wins over this setting.",
            "default": "ebay.com"
          },
          "mode": {
            "title": "Listing mode",
            "enum": [
              "active",
              "sold",
              "both"
            ],
            "type": "string",
            "description": "What to scrape for keyword / search / seller / store URLs:<br><br><b>Active</b> – current live listings (default).<br><b>Sold / completed</b> – confirmed sold listings for price comps (eBay exposes roughly the last 90 days). Sold rows come straight from the search results (sold price, sold date, condition, shipping, image) without an extra detail request.<br><b>Both</b> – runs an active search and a sold search for each URL (each respects Max number of items).",
            "default": "active"
          },
          "soldWithinDays": {
            "title": "Sold within last N days",
            "minimum": 1,
            "maximum": 730,
            "type": "integer",
            "description": "Keep only listings sold in the last N days (Sold / Both modes). eBay returns sold results in no date order and offers no server-side date filter, so the actor scans the result set and emits only the days you asked for — you are not charged for the rest, and <b>Max number of items</b> is applied after the date filter, so a cap can no longer fill up with old sales and miss recent ones. Active listings are unaffected. Leave empty for eBay's full sold history, which reaches back well beyond 90 days. <i>Deliberately has no prefill: an empty field means eBay's full sold history, so leaving it blank keeps today's behaviour for anyone who does not need a window.</i>"
          },
          "includeSummary": {
            "title": "Include sold-price summary row",
            "type": "boolean",
            "description": "Emit the one analytics row per sold search (median / average / min / max price, sell-through rate, sold-per-day, recommended price). Turn off if you only want the listings — it skips the row, its charge, and the extra request each summary makes to compute sell-through.",
            "default": true
          },
          "titleMustMatchQuery": {
            "title": "Title must match the search keyword",
            "type": "boolean",
            "description": "Keep only listings whose <b>title</b> contains every word of the search keyword, so near-matches (similar model numbers, 'compatible with' listings) are dropped before they are written — you are not charged for them. The rule is taken from each start URL's own <code>_nkw</code>, so a run with many URLs holds each one to its own identifier. Quoting the keyword narrows things at eBay's end and helps a lot for multi-word identifiers, but does almost nothing for a single token like <code>a2338</code> — this is what makes those strict. Ignored for seller-only and store-only URLs, which carry no keyword.",
            "default": false
          },
          "titleMustInclude": {
            "title": "Title must include these words",
            "type": "string",
            "description": "Keep only listings whose title contains every word given here. Use it when the words you want to match on differ from the search keyword. Overrides <b>Title must match the search keyword</b>. Matching ignores case, accents and punctuation, so <code>18V-55</code>, <code>18v 55</code> and <code>18v55</code> are the same."
          },
          "condition": {
            "title": "Condition",
            "enum": [
              "any",
              "new",
              "used",
              "refurbished",
              "open_box",
              "certified_pre_owned",
              "for_parts"
            ],
            "type": "string",
            "description": "Filter by item condition (keyword-search only). <b>Certified pre-owned</b> applies to eBay Motors vehicle listings; <b>For parts or not working</b> is common for salvage vehicles and parts.",
            "default": "any"
          },
          "minPrice": {
            "title": "Min price",
            "type": "integer",
            "description": "Lower price bound in the marketplace currency (keyword-search only). Leave empty for no minimum."
          },
          "maxPrice": {
            "title": "Max price",
            "type": "integer",
            "description": "Upper price bound in the marketplace currency (keyword-search only). Leave empty for no maximum."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "best_match",
              "ending_soon",
              "newest",
              "price_asc",
              "price_desc"
            ],
            "type": "string",
            "description": "Result ordering for keyword searches.",
            "default": "best_match"
          },
          "listingType": {
            "title": "Listing type",
            "enum": [
              "all",
              "auction",
              "bin"
            ],
            "type": "string",
            "description": "Filter by buying format (keyword-search only).",
            "default": "all"
          },
          "freeShipping": {
            "title": "Free shipping only",
            "type": "boolean",
            "description": "Only return listings with free shipping (keyword-search only).",
            "default": false
          },
          "returnsAccepted": {
            "title": "Returns accepted only",
            "type": "boolean",
            "description": "Only return listings that accept returns (keyword-search only).",
            "default": false
          },
          "seller": {
            "title": "Seller",
            "type": "string",
            "description": "Limit a keyword search to a specific seller's username (eBay _ssn)."
          },
          "category": {
            "title": "Category ID",
            "type": "string",
            "description": "Limit a keyword search to an eBay category by numeric category ID (eBay _sacat), e.g. 9355 for Cell Phones & Smartphones. Takes precedence over the eBay Motors preset below."
          },
          "motorsCategory": {
            "title": "eBay Motors category",
            "enum": [
              "none",
              "6000",
              "6001",
              "6024",
              "26429",
              "50054",
              "66466",
              "63732",
              "6038",
              "6028",
              "6030",
              "10063",
              "26443",
              "43962"
            ],
            "type": "string",
            "description": "Limit a keyword search to an eBay Motors category (keyword-search only, ebay.com category tree). Ignored if a numeric Category ID is set above.",
            "default": "none"
          },
          "minYear": {
            "title": "Min model year",
            "type": "integer",
            "description": "Vehicles only: lowest model year to include (eBay 'Model Year' filter; keyword-search only). Use together with an eBay Motors vehicle category. Leave empty for no minimum."
          },
          "maxYear": {
            "title": "Max model year",
            "type": "integer",
            "description": "Vehicles only: highest model year to include (eBay 'Model Year' filter; keyword-search only). Leave empty for no maximum."
          },
          "monitoringMode": {
            "title": "Run in monitoring mode where only newly listings compared to previous runs will be scraped",
            "type": "boolean",
            "description": "When enabled, the scraper will only return new items that haven't been seen in previous runs. Uses KeyValueStore to track seen items across runs.",
            "default": false
          },
          "enablePriceMonitoring": {
            "title": "Enable price monitoring",
            "type": "boolean",
            "description": "When enabled (requires Monitoring Mode), also returns items where the price has changed since the last run. Adds a 'priceChanged' flag to such items.",
            "default": false
          },
          "feedbackProfiles": {
            "title": "Seller feedback profiles",
            "type": "array",
            "description": "Seller usernames or feedback-profile URLs, e.g. <code>musicmagpie</code> or <code>https://www.ebay.com/fdbk/feedback_profile/musicmagpie</code>. (You can also paste a <code>/fdbk/</code> URL into Start URLs.)",
            "items": {
              "type": "string"
            }
          },
          "feedbackSort": {
            "title": "Feedback sort",
            "enum": [
              "most_recent",
              "most_relevant"
            ],
            "type": "string",
            "description": "Order reviews by most recent or most relevant (feedback scraping only).",
            "default": "most_recent"
          },
          "feedbackReceivedAs": {
            "title": "Feedback received as",
            "enum": [
              "seller",
              "buyer",
              "both"
            ],
            "type": "string",
            "description": "Feedback received as a seller, left as a buyer, or both (feedback scraping only).",
            "default": "seller"
          },
          "feedbackRating": {
            "title": "Feedback rating",
            "enum": [
              "all",
              "positive",
              "negative",
              "neutral"
            ],
            "type": "string",
            "description": "Only return reviews with this rating (feedback scraping only).",
            "default": "all"
          },
          "feedbackImagesOnly": {
            "title": "Feedback with images only",
            "type": "boolean",
            "description": "Only return reviews that include photos (feedback scraping only).",
            "default": false
          },
          "feedbackExcludeAutomated": {
            "title": "Exclude automated feedback",
            "type": "boolean",
            "description": "Hide eBay's auto-generated feedback (feedback scraping only).",
            "default": false
          },
          "maxItems": {
            "title": "Max number of items",
            "type": "integer",
            "description": "Maximum number of items to scrape (per search chain; in 'Both' mode the active and sold searches each return up to this many).",
            "default": 1000
          },
          "maxConcurrency": {
            "title": "Max Concurrency",
            "type": "integer",
            "description": "Maximum number of pages processed at the same time. Lower this (e.g. 3) if you hit eBay rate-limiting (HTTP 429); raise it for more speed on small runs.",
            "default": 5
          },
          "minConcurrency": {
            "title": "Min Concurrency",
            "type": "integer",
            "description": "Minimum number of pages that will be processed at the same time.",
            "default": 1
          },
          "maxRequestRetries": {
            "title": "Max Request Retries",
            "minimum": 12,
            "type": "integer",
            "description": "How many times a failed request is retried before it is given up on. Rate-limited (HTTP 429) pages have their own 6-backoff budget on top of this, and an empty page has its own 3 fresh-IP retries. Do not set below 12.",
            "default": 20
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Specifies proxy servers that will be used by the scraper in order to hide its origin.<br><br>For details, see <a href='https://apify.com/apify/web-scraper#proxy-configuration' target='_blank' rel='noopener'>Proxy configuration</a> in README.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}