{
  "openapi": "3.0.1",
  "info": {
    "title": "Etsy Scraper - Listings, Shops, Reviews & Keywords",
    "description": "Scrape Etsy: search listings, get full product details, shop profiles, and every review per listing or shop-wide (thousands, not just the first page), plus keyword suggestions for Etsy SEO. Export to JSON, CSV, or Excel.",
    "version": "0.0",
    "x-build-id": "gnYkIjnrmmjq5Ui8A"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sourabhbgp~etsy-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sourabhbgp-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/sourabhbgp~etsy-scraper/runs": {
      "post": {
        "operationId": "runs-sync-sourabhbgp-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/sourabhbgp~etsy-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-sourabhbgp-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": "Mode",
            "enum": [
              "search",
              "listing",
              "shop",
              "reviews",
              "keyword"
            ],
            "type": "string",
            "description": "What to scrape. Each mode uses its own input field below; the others are ignored.",
            "default": "search"
          },
          "searchQueries": {
            "title": "Search queries (Search mode)",
            "type": "array",
            "description": "One or more search terms, e.g. \"leather wallet\". Used in Search mode.",
            "items": {
              "type": "string"
            }
          },
          "minPrice": {
            "title": "Min price (Search mode)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum listing price filter. Leave empty for no minimum."
          },
          "maxPrice": {
            "title": "Max price (Search mode)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum listing price filter. Leave empty for no maximum."
          },
          "sortBy": {
            "title": "Sort by (Search mode)",
            "enum": [
              "relevancy",
              "price_asc",
              "price_desc",
              "most_recent"
            ],
            "type": "string",
            "description": "Result ordering.",
            "default": "relevancy"
          },
          "freeShippingOnly": {
            "title": "Free shipping only (Search mode)",
            "type": "boolean",
            "description": "Only return listings that ship free.",
            "default": false
          },
          "listingUrls": {
            "title": "Listing URLs or IDs (Listing mode)",
            "type": "array",
            "description": "Etsy listing URLs (https://www.etsy.com/listing/<id>/...) or bare numeric listing IDs. Used in Listing mode.",
            "items": {
              "type": "string"
            }
          },
          "shopNames": {
            "title": "Shop names or URLs (Shop mode)",
            "type": "array",
            "description": "Etsy shop names (e.g. Walletree) or shop URLs (https://www.etsy.com/shop/Walletree). Used in Shop mode.",
            "items": {
              "type": "string"
            }
          },
          "reviewScope": {
            "title": "Review scope (Reviews mode)",
            "enum": [
              "listing",
              "shop"
            ],
            "type": "string",
            "description": "Per-listing reviews, or every review across an entire shop.",
            "default": "listing"
          },
          "reviewSources": {
            "title": "Review sources (Reviews mode)",
            "type": "array",
            "description": "For scope Listing: listing URLs or IDs. For scope Shop: shop names or shop URLs. Used in Reviews mode.",
            "items": {
              "type": "string"
            }
          },
          "reviewSort": {
            "title": "Review sort (Reviews mode)",
            "enum": [
              "relevancy",
              "recency"
            ],
            "type": "string",
            "description": "Review ordering.",
            "default": "relevancy"
          },
          "keywords": {
            "title": "Keywords (Keyword mode)",
            "type": "array",
            "description": "Seed terms to get Etsy search suggestions / related keywords for. Used in Keyword mode.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many result rows (across all inputs). Leave empty for no cap. Reviews mode counts each review as a row."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Residential proxies are included and used automatically. Set the country to choose which Etsy locale and currency you get, or supply your own proxy URLs to run on your own pool instead. Defaults to the US.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}