{
  "openapi": "3.0.1",
  "info": {
    "title": "Shopee Phone Number Scraper",
    "description": "Shopee Phone Number Scraper collects phone data to support marketplace research and outreach. Filter by category or store to analyze sellers, track competitors, and connect with relevant vendors efficiently.",
    "version": "0.1",
    "x-build-id": "0cZTLZCPOdQ74uuoU"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/simpleapi~shopee-phone-number-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-simpleapi-shopee-phone-number-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/simpleapi~shopee-phone-number-scraper/runs": {
      "post": {
        "operationId": "runs-sync-simpleapi-shopee-phone-number-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/simpleapi~shopee-phone-number-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-simpleapi-shopee-phone-number-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": [
          "keywords",
          "country"
        ],
        "properties": {
          "keywords": {
            "title": "🔍 Keywords",
            "type": "array",
            "description": "🎯 What the sellers you want should be selling or called. Add one or more keywords (e.g. [\"beauty\", \"fashion\", \"phone case\"]) and the actor finds public Shopee seller pages matching them, then ☎️ extracts the phone numbers the sellers published on those pages. 💡 Tip: use words that appear in shop names/descriptions in that market — a local-language keyword usually beats an English one.",
            "items": {
              "type": "string"
            },
            "default": [
              "beauty"
            ]
          },
          "country": {
            "title": "🌍 Shopee marketplace (country)",
            "enum": [
              "Malaysia (+60)",
              "Indonesia (+62)",
              "Thailand (+66)",
              "Vietnam (+84)",
              "Philippines (+63)",
              "Singapore (+65)",
              "Taiwan (+886)",
              "Brazil (+55)"
            ],
            "type": "string",
            "description": "🌎 Which Shopee marketplace to scrape. Shopee operates exactly EIGHT marketplaces, so only those are offered — this selection genuinely drives the run: it picks the marketplace domain that is searched (shopee.com.my, shopee.co.th, …), the local search hints used to surface seller contact details, and the national numbering plan every extracted number is validated against. 📞 Numbers that are not valid for the chosen country are discarded, never re-labelled.",
            "default": "Malaysia (+60)"
          },
          "maxPhoneNumbers": {
            "title": "📊 Maximum phone numbers per keyword",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "🎚️ How many phone numbers to collect per keyword before moving to the next one. ⚡ Higher = more leads but longer runs. Default is 10 ✅ (range 1 – 10,000). Each keyword also stops at a 10-page search ceiling, so very high values are capped by how much matching content actually exists.",
            "default": 10
          },
          "pageScope": {
            "title": "📄 Page scope",
            "enum": [
              "Seller shop pages only",
              "Seller shops + product listings"
            ],
            "type": "string",
            "description": "🏪 'Seller shop pages only' (recommended) restricts results to sellers' own shop pages, where a published phone number is unambiguously that seller's contact — it also tunes the search query toward those pages, which is what makes markets like Indonesia work at all. 🌐 'All Shopee pages' additionally accepts product listing pages and drops the shop-page query tuning: broader, noisier, and usually returns FEWER validated numbers, since product listings rarely show contact details.",
            "default": "Seller shop pages only"
          },
          "platform": {
            "title": "🌐 Platform",
            "enum": [
              "Shopee"
            ],
            "type": "string",
            "description": "🛍️ The service to scrape. Locked to Shopee — this actor's query design, page classification and phone validation are all Shopee-specific.",
            "default": "Shopee"
          },
          "proxyConfiguration": {
            "title": "🛡️ Proxy configuration",
            "type": "object",
            "description": "🌐 How the actor connects to the search engine. 🆓 Leave it as-is and the actor uses Apify's GOOGLE_SERP proxy group, which is required to read search-result pages without being blocked. 🔄 On any blocked or failed response it rotates to a new proxy IP and retries. 🧠 Advanced users can select different Apify proxy groups or supply custom proxy URLs here and those WILL be used.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "GOOGLE_SERP"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}