{
  "openapi": "3.0.1",
  "info": {
    "title": "Glovo Scraper",
    "description": "[💰 $2.0 / 1K] Extract Glovo store listings and menu data across restaurants, groceries, pharmacy & beauty, and shops in 1,316 cities across 24 countries. Scrape any city by name or paste store links to get ratings, review volume, base delivery fees, promotions, availability, and menu prices.",
    "version": "1.0",
    "x-build-id": "2KegPlc7vund9MCNm"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/solidcode~glovo-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-solidcode-glovo-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/solidcode~glovo-scraper/runs": {
      "post": {
        "operationId": "runs-sync-solidcode-glovo-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/solidcode~glovo-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-solidcode-glovo-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": {
          "city": {
            "title": "City",
            "type": "string",
            "description": "The Glovo city to scrape, by name. Use the name Glovo itself uses for it: for some cities that is the local spelling (Lisboa, not Lisbon), for others the English one (Bucharest, not Bucuresti). Working examples: Barcelona, Madrid, Lisboa, Warszawa, Bucharest. If the city is not found we tell you the closest match Glovo delivers to, so you can correct it in one go. Leave the store links empty to discover stores in this city."
          },
          "storeCategory": {
            "title": "Vertical",
            "enum": [
              "all",
              "food",
              "groceries",
              "pharmacy-beauty",
              "shops"
            ],
            "type": "string",
            "description": "Which kind of stores to collect in the chosen city. 'All verticals' covers everything Glovo offers there."
          },
          "categoryFilters": {
            "title": "Sub-type Filters (optional)",
            "type": "array",
            "description": "Optionally narrow a vertical to specific cuisines or sub-types, one per line (e.g. 'burgers', 'pizza', 'sushi'). Leave empty to scrape the whole vertical.",
            "items": {
              "type": "string"
            }
          },
          "storeUrls": {
            "title": "Store Links (optional)",
            "type": "array",
            "description": "Paste specific Glovo store links to scrape exactly those stores, one per line (e.g. a 'glovoapp.com/.../stores/...' link). Products are always collected for these. Leave empty to discover stores from the city and vertical above.",
            "items": {
              "type": "string"
            }
          },
          "includeProducts": {
            "title": "Include products / menu items",
            "type": "boolean",
            "description": "Also collect the full product or menu list for each store. This adds a lot more results and takes longer: a restaurant typically adds 70-180 rows and a large supermarket up to 3,000, on top of one row per store. Restaurants and normal stores return their whole menu in full. Very large grocery and quick-commerce stores are sampled instead of fully listed: we walk their top aisles to a safe depth and stop at roughly 3,000 products per store, so a big hypermarket's catalog may be partial. The Max Results limit below caps the run as a whole."
          },
          "maxStores": {
            "title": "Max Stores",
            "minimum": 0,
            "type": "integer",
            "description": "How many stores to keep from this run. Each store vertical (Food, Groceries, etc.) returns up to about 50 stores — that is Glovo's public listing limit, so a single vertical can never give you more than ~50 no matter what you set here. To get broader coverage, choose 'All verticals' (each vertical adds its own ~50) or add several Sub-type Filters (each filter pulls its own set of stores). This also applies to Store Links: if you paste more links than this number, only the first ones are collected, so raise it (or set it to 0) when you paste a long list. Setting this to 0 lifts our store cap — that is about 200 stores across all four verticals, and the Max Results limit below still bounds the run. Tip: start with 20-50 to test. If you turn on products, each store adds its own rows on top: roughly 70-180 for a restaurant and up to 3,000 for a large supermarket, so 0 plus products can reach tens of thousands of results."
          },
          "maxResults": {
            "title": "Max Results",
            "minimum": 1,
            "type": "integer",
            "description": "Safety limit on the total number of results a single run will deliver, counting store rows and product rows together. It exists so that a broad run cannot quietly become a very large one: with products switched on, 'All verticals' with no store cap can otherwise produce well over a hundred thousand rows. The run stops cleanly when it reaches this number and tells you that it did, so you always know whether you got everything. Raise it if you genuinely need more."
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "es",
              "pt",
              "it",
              "fr",
              "pl",
              "uk",
              "ro"
            ],
            "type": "string",
            "description": "Language for store and product names and descriptions. Independent of the city: any language works with any Glovo country."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}