{
  "openapi": "3.0.1",
  "info": {
    "title": "Talabat Scraper [Only $0.50💰] | Menus | Prices | 9 Countries",
    "description": "Extract Talabat restaurants, menus, prices and meal choice trees for food delivery market research, competitor price monitoring and restaurant databases across UAE, Saudi Arabia, Kuwait, Qatar, Bahrain, Oman, Jordan, Egypt, Iraq. No browser or proxy — Talabat's own API from $0.50/1k.",
    "version": "1.0",
    "x-build-id": "ZdpdISp951q2pqMnA"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/ahmed_jasarevic~talabat-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-ahmed_jasarevic-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/ahmed_jasarevic~talabat-scraper/runs": {
      "post": {
        "operationId": "runs-sync-ahmed_jasarevic-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/ahmed_jasarevic~talabat-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-ahmed_jasarevic-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": {
          "country": {
            "title": "Country",
            "enum": [
              "uae",
              "saudi_arabia",
              "kuwait",
              "qatar",
              "bahrain",
              "oman",
              "jordan",
              "egypt",
              "iraq"
            ],
            "type": "string",
            "description": "Country to scrape. Talabat no longer serves restaurants in some countries on its website - runs that return no restaurants are simply skipped.",
            "default": "uae"
          },
          "area": {
            "title": "Area / City",
            "type": "string",
            "description": "Optional. Area name, area slug or area ID (e.g. \"Abu Hail\", \"abu-hail\", or 1169). When set, the actor crawls the area's full restaurant catalogue and uses the area location for keyword search. Leave empty to search the whole country.",
            "default": "Dubai"
          },
          "searchKeywords": {
            "title": "Search keywords",
            "type": "array",
            "description": "Optional. Search cuisine/restaurant keywords (e.g. \"pizza\", \"burger\", \"koshari\"). One keyword per query, paginated until no more results. Leave empty when using an area catalogue.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Optional. Direct talabat.com listing or restaurant menu URLs, e.g. https://www.talabat.com/uae/restaurants/1169/abu-hail or https://www.talabat.com/uae/restaurant/45079/al-farooj-al-shami-al-muraqqabat",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "title": "URL",
                  "type": "string",
                  "description": "talabat.com listing or menu URL"
                }
              },
              "required": [
                "url"
              ]
            },
            "default": []
          },
          "scrapeMenu": {
            "title": "Scrape full menu",
            "type": "boolean",
            "description": "Fetch the full menu (categories, items, prices) for every restaurant. Adds one page request per restaurant.",
            "default": false
          },
          "scrapeMenuChoices": {
            "title": "Scrape menu choices",
            "type": "boolean",
            "description": "Fetch the complete meal choice trees (sizes, add-ons, extras with prices) for items that have choices. One request per customizable item.",
            "default": false
          },
          "maxVendors": {
            "title": "Maximum restaurants",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of restaurants to process per search keyword or area. Leave 0 for unlimited.",
            "default": 10
          },
          "maxItemsPerVendor": {
            "title": "Maximum menu items per restaurant",
            "minimum": 0,
            "type": "integer",
            "description": "Cap on the number of menu items saved per restaurant. Leave 0 for unlimited.",
            "default": 10
          },
          "requestDelayMillis": {
            "title": "Extra delay between requests (ms)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Optional extra pause after each request, on top of the global rate limit. Leave 0 and use maxRequestsPerSecond for pacing instead.",
            "default": 0
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many restaurant pages / listing pages to process in parallel. Higher is faster but more aggressive.",
            "default": 10
          },
          "maxRequestsPerSecond": {
            "title": "Max requests per second (global)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Global request rate cap shared by all parallel workers. 0 = no limit. Prevents hammering the site while keeping speed.",
            "default": 10
          },
          "extendOutputFunction": {
            "title": "Extend output function",
            "type": "string",
            "description": "Optional JS function to modify or augment the output objects. Signature: (object, input, context) => object. Note: after reaching the maximum number of results, the results will not be overwritten using this function.",
            "default": ""
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify proxy to spread requests across IPs. Usually not required (clean IPs handle menus at 8+ rps), but for large scrapes or if your IP gets flagged by Talabat's WAF, rotate with RESIDENTIAL (best) or DATACENTER (cheaper, sometimes pre-flagged). 429s are auto-handled with global backoff either way."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}