{
  "openapi": "3.0.1",
  "info": {
    "title": "Website Screenshot & Content by Country (Geo)",
    "description": "Take a website screenshot and get the page content (Markdown, prices, redirects, language, hreflang) as it appears in any country you pick, through real home (residential) internet connections there. Geo-targeted, with proof of the country for every page. Pay only for pages delivered.",
    "version": "0.1",
    "x-build-id": "h9gd7fFCN4cfd9ZmH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zaiq~page-from-any-country/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zaiq-page-from-any-country",
        "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/zaiq~page-from-any-country/runs": {
      "post": {
        "operationId": "runs-sync-zaiq-page-from-any-country",
        "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/zaiq~page-from-any-country/run-sync": {
      "post": {
        "operationId": "run-sync-zaiq-page-from-any-country",
        "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": [
          "urls",
          "countries"
        ],
        "properties": {
          "urls": {
            "title": "Pages",
            "type": "array",
            "description": "The pages to fetch. Each page is fetched once from every country below.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "countries": {
            "title": "Countries",
            "minItems": 1,
            "maxItems": 100,
            "uniqueItems": true,
            "type": "array",
            "description": "Pick countries, or type any two-letter country code. Each page is fetched from each country.",
            "items": {
              "type": "string",
              "enumSuggestedValues": [
                "us",
                "gb",
                "de",
                "fr",
                "ca",
                "au",
                "in",
                "br",
                "mx",
                "es",
                "it",
                "nl",
                "se",
                "pl",
                "ch",
                "at",
                "be",
                "ie",
                "pt",
                "dk",
                "no",
                "fi",
                "cz",
                "ro",
                "gr",
                "hu",
                "tr",
                "ua",
                "il",
                "ae",
                "sa",
                "eg",
                "za",
                "ng",
                "ke",
                "jp",
                "kr",
                "tw",
                "hk",
                "sg",
                "my",
                "id",
                "ph",
                "th",
                "vn",
                "pk",
                "ar",
                "cl",
                "co",
                "nz"
              ],
              "enumTitles": [
                "United States (US)",
                "United Kingdom (GB)",
                "Germany (DE)",
                "France (FR)",
                "Canada (CA)",
                "Australia (AU)",
                "India (IN)",
                "Brazil (BR)",
                "Mexico (MX)",
                "Spain (ES)",
                "Italy (IT)",
                "Netherlands (NL)",
                "Sweden (SE)",
                "Poland (PL)",
                "Switzerland (CH)",
                "Austria (AT)",
                "Belgium (BE)",
                "Ireland (IE)",
                "Portugal (PT)",
                "Denmark (DK)",
                "Norway (NO)",
                "Finland (FI)",
                "Czechia (CZ)",
                "Romania (RO)",
                "Greece (GR)",
                "Hungary (HU)",
                "Turkey (TR)",
                "Ukraine (UA)",
                "Israel (IL)",
                "United Arab Emirates (AE)",
                "Saudi Arabia (SA)",
                "Egypt (EG)",
                "South Africa (ZA)",
                "Nigeria (NG)",
                "Kenya (KE)",
                "Japan (JP)",
                "South Korea (KR)",
                "Taiwan (TW)",
                "Hong Kong (HK)",
                "Singapore (SG)",
                "Malaysia (MY)",
                "Indonesia (ID)",
                "Philippines (PH)",
                "Thailand (TH)",
                "Vietnam (VN)",
                "Pakistan (PK)",
                "Argentina (AR)",
                "Chile (CL)",
                "Colombia (CO)",
                "New Zealand (NZ)"
              ]
            }
          },
          "includeMarkdown": {
            "title": "Page text as Markdown",
            "type": "boolean",
            "description": "Add the page's main text as Markdown, ready for an AI model or a diff.",
            "default": true
          },
          "maxMarkdownChars": {
            "title": "Longest Markdown",
            "minimum": 500,
            "maximum": 500000,
            "type": "integer",
            "description": "Markdown longer than this is cut, to keep rows small.",
            "default": 20000
          },
          "includePrices": {
            "title": "Prices the page states",
            "type": "boolean",
            "description": "Read prices from the page's own product data (JSON-LD, microdata, product meta tags).",
            "default": true
          },
          "renderJs": {
            "title": "Run JavaScript (real browser)",
            "type": "boolean",
            "description": "Load each page in a real browser, so prices and text that appear only after JavaScript runs are included. Slower, and charged at the browser price.",
            "default": false
          },
          "screenshot": {
            "title": "Screenshot",
            "type": "boolean",
            "description": "Save a screenshot of each delivered page from each country (turns on the browser). The row links to it.",
            "default": false
          },
          "fullPageScreenshot": {
            "title": "Full-length screenshot",
            "type": "boolean",
            "description": "Capture the whole page instead of the first screen.",
            "default": false
          },
          "hidePopups": {
            "title": "Hide cookie banners and pop-ups",
            "type": "boolean",
            "description": "Before the screenshot, hide cookie banners and newsletter or discount pop-ups so the page itself shows. Nothing is clicked or accepted, and country or store prompts are kept because they are part of what a visitor there sees. Turn off to capture the page exactly as it first appears.",
            "default": true
          },
          "saveHtml": {
            "title": "Save the full HTML",
            "type": "boolean",
            "description": "Store each delivered page's HTML in the run's key-value store and link it from the row.",
            "default": false
          },
          "maxTriesPerPage": {
            "title": "Addresses to try per page",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "If an address lands outside the country, fails or meets a bot wall, a new address is tried, up to this many. Failed tries are free.",
            "default": 4
          },
          "maxConcurrency": {
            "title": "Pages at once",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many pages are fetched at the same time.",
            "default": 10
          },
          "acceptLanguage": {
            "title": "Accept-Language header",
            "type": "string",
            "description": "Leave empty to send each country's usual browser language (for example de-DE in Germany). Set it to force one language everywhere."
          },
          "waitForSelector": {
            "title": "Browser: wait for this element",
            "type": "string",
            "description": "With the browser on, the page counts as delivered (and is charged) only once this element appears, for example .price. If it never appears, a new address is tried, and if it still never appears the row is free. Leave empty to read the page once it goes quiet."
          },
          "extraWaitMs": {
            "title": "Browser: extra wait (ms)",
            "minimum": 0,
            "maximum": 30000,
            "type": "integer",
            "description": "With the browser on, wait this much longer after the page goes quiet.",
            "default": 0
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}