{
  "openapi": "3.0.1",
  "info": {
    "title": "Etsy Scraper - Bestsellers, In-Cart Counts & Shop Sales",
    "description": "Scrape Etsy search results and shops: price, discount, Bestseller and Popular now badges, how many people have each item in their cart, shop total sales and sales per day since your last run. Digital downloads filter. Error rows are free.",
    "version": "0.1",
    "x-build-id": "RoJjKbPzSYSj5T2KH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapewise~etsy-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapewise-etsy-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/scrapewise~etsy-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapewise-etsy-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/scrapewise~etsy-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapewise-etsy-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "What to scrape",
            "enum": [
              "search",
              "shop",
              "listing"
            ],
            "type": "string",
            "description": "Search: the cards of Etsy search results for each keyword, with badges, prices and the seller's sales. Shop: one summary row per shop (exact total sales, admirers, rating, years on Etsy) plus its items with in-cart counts. Listing: the full page of each listing (rating, review count, category, stock, shop favorites).",
            "default": "search"
          },
          "searchQueries": {
            "title": "Search keywords",
            "type": "array",
            "description": "Used in Search mode. One keyword per line, exactly as you would type it on Etsy, for example: digital planner, wedding invitation template, svg cut file, crochet pattern.",
            "items": {
              "type": "string"
            }
          },
          "shopUrls": {
            "title": "Shops",
            "type": "array",
            "description": "Used in Shop mode. Shop URLs (https://www.etsy.com/shop/ShopName) or just shop names, one per line.",
            "items": {
              "type": "string"
            }
          },
          "listingUrls": {
            "title": "Listings",
            "type": "array",
            "description": "Used in Listing mode. Listing URLs (https://www.etsy.com/listing/1234567890/...) or listing ids, one per line.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max items per keyword or shop",
            "minimum": 0,
            "type": "integer",
            "description": "How many listings to return for each keyword (Search) or each shop (Shop). A search page has about 60 listings, a shop page about 40. In Shop mode, 0 returns only the shop summary row.",
            "default": 48
          },
          "maxPages": {
            "title": "Max pages per keyword or shop",
            "minimum": 1,
            "type": "integer",
            "description": "Safety cap on result pages read for each keyword or shop.",
            "default": 5
          },
          "sortBy": {
            "title": "Sort search results by",
            "enum": [
              "relevance",
              "newest",
              "price_low",
              "price_high",
              "top_reviews"
            ],
            "type": "string",
            "description": "Search mode only.",
            "default": "relevance"
          },
          "digitalOnly": {
            "title": "Digital downloads only",
            "type": "boolean",
            "description": "Search mode only: keep only instant digital downloads (templates, printables, SVG, patterns).",
            "default": false
          },
          "minPrice": {
            "title": "Min price (USD)",
            "type": "string",
            "description": "Search mode only. Leave empty for no minimum."
          },
          "maxPrice": {
            "title": "Max price (USD)",
            "type": "string",
            "description": "Search mode only. Leave empty for no maximum."
          },
          "includeAds": {
            "title": "Include sponsored listings",
            "type": "boolean",
            "description": "Etsy mixes ads into search results. They are returned with isAd = true. Turn off to skip them (skipped ads are not charged).",
            "default": true
          },
          "compareWithPreviousRun": {
            "title": "Compare with my previous run",
            "type": "boolean",
            "description": "Keeps a small state in your account (key-value store 'etsy-scraper-state') so the next run adds salesSinceLastRun and salesPerDay to each shop, and inCartsChange and becameBestseller to each listing. Schedule the Actor daily to track sales velocity.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Etsy blocks datacenter traffic. US residential proxy is the default and its cost is included in the price. Change it only to use your own proxies.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}