{
  "openapi": "3.0.1",
  "info": {
    "title": "eBay Scraper — Active & Sold Listings, Prices & Analytics",
    "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": "bLmGHygOwk3CWdSEk"
  },
  "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, from any of the 17 supported sites: 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. Accepted: search results (<code>/sch/i.html?…</code>, and category searches <code>/sch/&lt;number&gt;/i.html?…</code>, searched as <code>/sch/i.html?_sacat=&lt;number&gt;&amp;…</code>), sellers (<code>/usr/&lt;seller&gt;</code>), stores (<code>/str/&lt;store&gt;</code>), category pages (<code>/b/&lt;name&gt;/&lt;categoryId&gt;/bn_&lt;id&gt;</code>, see <b>Category page (/b/) URLs</b> below), single items (<code>/itm/&lt;id&gt;</code>) and seller feedback (<code>/fdbk/…</code>).<br><br><b>Filters in a search URL are kept.</b> Set them on eBay and copy the address bar: item location (<code>LH_LocatedIn=1&amp;_salic=…</code>), item specifics such as <code>Brand=Nike</code>, several conditions, accepts offers, free shipping, a category with no keyword, sellers to include or exclude. URL shapes not listed above are read from eBay's website, where Listing mode, fast mode and the actor's own filters do not apply. A filter with fewer matches than one page can bring a page of near matches, which are returned and billed, so test a new URL with a small <b>Max number of items</b>.<br><br>Set <b>Marketplace</b> to the site your URLs come from: the connection country follows it. The keyword-search options below (condition, price, sort, …) do not change a pasted URL, and <b>Search query</b>, <b>Search queries</b> or <b>Seller</b> adds a separate search. Not supported: <code>store_cat</code>, <code>LH_PrefLoc</code>, distance or ZIP code, sold-date ranges (use <b>Sold within last N days</b>). The README has tested examples for every site. A text file of URLs can be uploaded or linked with this editor's bulk options, one URL per line. An entry that is not a URL is skipped with a note in the log. Leave empty if you use the <b>Search query</b> or <b>Search queries</b> fields 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, gallery images, seller details (seller ID, store and business/private status on every marketplace), returns and product identifiers. That is one extra request per listing, while the search itself returns up to 200 listings per request. When OFF, active listings are returned straight from the search results (price, condition, shipping and shipping cost, seller name and feedback score, image, availability), which is much faster and cheaper. The seller's own description is a separate option (<b>Include the seller's full description</b>) in either mode. Sold listings are always returned from search results regardless of this setting.",
            "default": true
          },
          "includeDescription": {
            "title": "Include the seller's full description",
            "type": "boolean",
            "description": "Adds a <code>description</code> field holding the seller's own description as plain text. eBay does not put this in the item data — the item response carries only a \"See full description\" stub or an eBay-written blurb — so it is fetched separately, which costs <b>one extra request per item</b>. Works in both fast and full-detail mode. Items whose seller left the description empty simply have no <code>description</code> field.",
            "default": false
          },
          "includeLegacyFields": {
            "title": "Include legacy fields (raw item-page dump + basic_info)",
            "type": "boolean",
            "description": "ON (default) keeps every field rows had before: full-detail rows also carry eBay's raw item-page modules (<code>vls</code>, <code>buy_box</code>, <code>semantic_data_v2</code>, <code>about_this_item</code>, …) and every row carries a copy of the search card under <code>basic_info</code>. That legacy data is about 90% of a full-detail row (~45 KB of ~50 KB; up to ~1 MB on large listings) and about 40% of a fast or sold row. Turn <b>OFF</b> for lean, flat rows: every documented field stays (item specifics, seller, category, start/end dates, variations, shipping and returns included), full-detail rows get 10× or more smaller, fast and sold rows about 40% smaller, and billing does not change. Legacy fields are deprecated and are planned to default to OFF in a future major version.",
            "default": true
          },
          "categoryPageMode": {
            "title": "Category page (/b/) URLs",
            "enum": [
              "exact",
              "keyword",
              "category"
            ],
            "type": "string",
            "description": "How to scrape eBay category pages pasted into Start URLs (<code>/b/&lt;name&gt;/&lt;categoryId&gt;/bn_&lt;id&gt;</code>). A page whose title is eBay's own name for its category (e.g. <i>Cell Phones &amp; Smartphones</i>) is scraped through eBay's search, with sold mode, the sold-price summary and fast mode. eBay also builds /b/ pages for a brand, a model or a curated selection <i>inside</i> a category (e.g. <i>Apple iPhone</i> inside Cell Phones &amp; Smartphones). That filter is not in the URL, so eBay's search cannot reproduce it.<br><br><b>Exact page</b> (default) – such pages, top-level categories and pages without a category number are read from the web page itself (that route has no sold-price summary).<br><b>Add the page title as keywords</b> – search the category plus the title words that are not part of the category name (<i>Apple iPhone</i> → keyword \"Apple iPhone\" in Cell Phones &amp; Smartphones). Close for brand and model pages, poor for curated pages such as <i>Luxury Watches</i>.<br><b>Whole category</b> – search the entire category, ignoring the page's own filter. Can return far more, and different, listings than the page shows.<br><br>Pages without a category number and invalid category ids are read from the web page in every mode. eBay's search lists a top-level category only together with a keyword, so a top-level page is searched only with <b>Add the page title as keywords</b>, and only when its title has words the category name lacks.<br><br>Filters in the /b/ URL itself (after <code>?</code>, e.g. <code>Brand=Apple</code> or <code>LH_BIN=1</code>) are always applied. Approximated pages get a free <code>_searchMeta</code> row saying what was searched.",
            "default": "exact"
          },
          "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). To search several keywords in one run, use <b>Search queries</b> below. Leave empty if you provided Start URLs."
          },
          "searchQueries": {
            "title": "Search queries (one keyword per line)",
            "maxItems": 500,
            "type": "array",
            "description": "A list of keywords. <b>Each keyword runs as its own search</b> with the same Marketplace, Listing mode and filters below, and <b>Max number of items applies to each keyword</b>. Every row carries <code>searchQuery</code> (the keyword it came from) and <code>searchUrl</code>. Sold searches get one price-summary row per keyword, and each is a separate charged event (turn off <b>Include sold-price summary row</b> to skip them). When eBay has few or no exact matches it fills the page with near matches, so turn on <b>Title must match the search keyword</b> for clean per-keyword results. Combines with Search query and Start URLs; the untouched example Start URL is ignored while this list is in use. A keyword listed twice (ignoring case and spacing) runs once. A listing that two keywords both find is returned, and charged, once under each. Up to 500 keywords per run.",
            "items": {
              "type": "string"
            }
          },
          "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 site to scrape (affects currency and inventory; on search rows eBay's own labels such as condition and shipping come back in English, while a single <code>/itm/</code> row carries the item page's own condition wording, in the site's language), and on a paid plan the country the actor connects from. Applies to keyword searches and to pasted <code>ebay.com</code> URLs, except <code>/b/</code> category URLs and <code>/sch/&lt;number&gt;/i.html</code> category searches, which are always searched on their own site. A regional domain in a pasted URL (e.g. ebay.co.uk) picks the site for that URL, but the connection country still follows this setting, so set it to the site your URLs come from: eBay shows a connection from another country fewer listings.",
            "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. Most of eBay's sold results are from the last ~90 days, with a thin tail of older sales; use <b>Sold within last N days</b> for an exact window. Sold rows come straight from the search results (sold price, sold date, condition, shipping and shipping cost, seller, 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). A URL that already holds <code>LH_Sold=1&amp;LH_Complete=1</code> runs once, as a sold search.",
            "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 does not 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."
          },
          "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: that skips the row, its charge, and the extra request each summary makes to compute sell-through. A summary is also skipped when the run's maximum cost is already used up.",
            "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 search's own keyword (every <b>Search queries</b> entry, and each start URL's <code>_nkw</code>), so a run with many keywords 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",
              "best_offer"
            ],
            "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 one seller's username (eBay _ssn). With no keyword, returns everything that seller lists. It does not filter pasted Start URLs: set next to them, it runs as a separate search. To narrow a pasted URL to one seller, add <code>_ssn=&lt;seller&gt;</code> to it."
          },
          "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 keep. Applied by the actor to the year at the start of each listing title, for keyword searches and pasted URLs alike; listings whose title does not start with a year (parts, accessories) are kept. 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 keep. Same rule as Min model year. 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. History is kept per exact search URL: changing a URL, even by adding a filter, starts a new history (a /b/ category page or a /sch/&lt;number&gt;/i.html search keeps the history it built in earlier runs, and its first run on eBay's search is still a first run). The first run of a monitor (and the first run after a URL change) returns up to Max number of items and records every listing it read as seen, so later runs return only new listings. After that, new listings on the first results page that do not fit under Max number of items are returned by the next run. On later pages, every new listing a run reads is recorded as seen, including the ones past Max number of items. Do not run two monitoring runs of the same search at the same time: each reads the history once, when it starts on that search. If a listing cannot be recorded as seen, it is still returned, and the next run may return it once more. After the first run, a fast or sold listing that did not fit under the maximum cost is not kept as seen, so the next run returns it. In the first run, a results page on which not one row fit under the maximum cost records nothing. A listing whose item page could not be read is not kept as seen either, so the next run returns it.",
            "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>&lt;seller&gt;</code> or <code>https://www.ebay.com/fdbk/feedback_profile/&lt;seller&gt;</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 <b>per search</b>: each <b>Search queries</b> keyword, the <b>Search query</b> and each start URL is its own search, and in 'Both' mode its active and sold halves each return up to this many. A run with 20 keywords can return up to 20 × this number. Start URLs read from eBay's website (<code>/b/</code> pages that are not scraped through eBay's search, other URL shapes) are the exception: all of them together share one limit.",
            "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. Retries after an eBay rate limit (HTTP 429; one page can need 10 or more) and the 3 fresh-IP retries of an empty page all count toward this number, so a low value can fail a page that a few more retries would have read. Keep the default of 20 unless you have a reason to lower it. Values below 12 are not accepted.",
            "default": 20
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Used on the free Apify plan only. On a paid plan the actor connects through a residential address in the <b>Marketplace</b> country by itself and ignores this setting. On the free plan, keep RESIDENTIAL and set the country to the Marketplace country (US for ebay.com, GB for ebay.co.uk, DE for ebay.de, …): eBay shows a connection from another country fewer listings.<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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}