{
  "openapi": "3.0.1",
  "info": {
    "title": "Talabat Scraper — Restaurants, Menus, Prices",
    "description": "Scrape Talabat restaurants across 9 MENA countries. Search a keyword, dump every restaurant in a delivery area, or hit a branch by id. Get ratings, GPS, payments, Talabat Pro, full menus with prices, and choice trees (sizes, add-ons). No proxy needed. Export JSON, CSV or Excel.",
    "version": "0.0",
    "x-build-id": "3NCZCGS8Py4EAV1b2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~talabat-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-talabat-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/memo23~talabat-scraper/runs": {
      "post": {
        "operationId": "runs-sync-memo23-talabat-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/memo23~talabat-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-talabat-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",
        "properties": {
          "queries": {
            "title": "Search queries",
            "type": "array",
            "description": "Search terms to find restaurants (e.g. 'pizza', 'mcdonalds', 'sushi'). Each query returns up to Max Results restaurants. Leave empty if you only want to scrape specific restaurants via Restaurant Slugs.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "restaurantSlugs": {
            "title": "Restaurant slugs or URLs",
            "type": "array",
            "description": "Scrape specific restaurants directly, skipping search. Accepts bare slugs ('blue-fig' — the last segment of a Talabat restaurant URL) or full URLs (https://www.talabat.com/jordan/blue-fig). Bare slugs use the Country selected below; full URLs carry their own country. Menu URLs that include a branch id (/restaurant/609078/...) skip the brand page.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "branchIds": {
            "title": "Branch IDs",
            "type": "array",
            "description": "Talabat branch ids to scrape directly — the number in a restaurant URL (/uae/restaurant/609078/... → 609078). Also accepts those full menu URLs. Exact match; does not go through search.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "fullCatalog": {
            "title": "Full catalogue",
            "type": "boolean",
            "description": "If enabled, sweep one or more delivery areas and return every restaurant that delivers to them. Use Catalogue Areas to name the areas, or leave that empty to auto-pick from the country's all-areas page (one featured area per city). Capped by Max restaurants / Max results.",
            "default": false
          },
          "catalogAreas": {
            "title": "Catalogue areas",
            "type": "array",
            "description": "Delivery areas to sweep, as area ids ('1280'), slugs ('abu-hail' / 'dubai-world-trade-center-dwtc'), or full listing URLs (https://www.talabat.com/uae/restaurants/1169/abu-hail). Leave empty with Full catalogue on to auto-pick from the all-areas page.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxAreas": {
            "title": "Max areas (auto-pick)",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many areas to auto-pick from the all-areas page when Catalogue Areas is empty. Default 1 — one area in Dubai already has 7,000+ restaurants.",
            "default": 1
          },
          "maxPagesPerArea": {
            "title": "Max pages per area",
            "minimum": 0,
            "type": "integer",
            "description": "Cap listing pages fetched per area (15 restaurants per page). 0 sweeps the area to the end (still limited by Max restaurants). Use 2–5 for a quick sample of a big city.",
            "default": 0
          },
          "enrichPro": {
            "title": "Resolve Talabat Pro",
            "type": "boolean",
            "description": "Talabat Pro is published on search results, not on area listings or slug/branch-id pages. Enable this to look the flag up via search for those rows. Search-mode rows already have it.",
            "default": false
          },
          "maxEnrichRequests": {
            "title": "Max Pro lookup requests",
            "minimum": 0,
            "type": "integer",
            "description": "Request budget for Resolve Talabat Pro. One search call per unresolved restaurant. Default 50.",
            "default": 50
          },
          "country": {
            "title": "Country",
            "enum": [
              "uae",
              "sa",
              "kw",
              "bh",
              "om",
              "qa",
              "jo",
              "eg",
              "iq"
            ],
            "type": "string",
            "description": "Talabat country storefront to search. Site-style slugs (ksa, kuwait, jordan...) are accepted too.",
            "default": "uae"
          },
          "maxResults": {
            "title": "Max results per query",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of restaurants to return per search query.",
            "default": 20
          },
          "scrapeMenu": {
            "title": "Scrape full menu",
            "type": "boolean",
            "description": "If enabled, each result includes a 'menu_items' array with every menu item's name, description, price, discounted old price, image, and menu section.",
            "default": false
          },
          "scrapeMenuChoices": {
            "title": "Scrape menu choices (sizes, add-ons, extras)",
            "type": "boolean",
            "description": "If enabled, fetches the full choice tree for every customizable menu item: choice sections (e.g. 'Size', 'Add-ons'), individual options with prices, and selection rules (min/max, single vs multi-select, mandatory). Automatically enables Scrape Full Menu. Adds one HTTP call per customizable item and is billed as a separate event, so customers who don't need choices aren't charged for them.",
            "default": false
          },
          "maxItems": {
            "title": "Maximum restaurants to scrape (all queries combined)",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on the total number of restaurants collected across all queries and slugs. Use this to limit billing."
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of restaurant pages processed in parallel.",
            "default": 10
          },
          "proxy": {
            "title": "Proxy configuration (optional)",
            "type": "object",
            "description": "Talabat.com serves direct requests without blocking, so no proxy is used by default — runs are faster and there's no proxy bill. Configure one here only if your use case requires it.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}