{
  "openapi": "3.0.1",
  "info": {
    "title": "Michelin Guide Scraper",
    "description": "Scrape Michelin-starred restaurants from guide.michelin.com. Search by name, filter by city or country, browse all starred restaurants, or fetch individual restaurant pages. Returns name, stars, address, cuisine, price range, coordinates, and more",
    "version": "1.0",
    "x-build-id": "rlBu2bQESmzhlcwk9"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlerbros~michelin-guide-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlerbros-michelin-guide-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/crawlerbros~michelin-guide-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawlerbros-michelin-guide-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/crawlerbros~michelin-guide-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawlerbros-michelin-guide-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": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "starredRestaurants",
              "search",
              "byCity",
              "byUrl"
            ],
            "type": "string",
            "description": "What to fetch from the Michelin Guide.",
            "default": "starredRestaurants"
          },
          "searchQuery": {
            "title": "Search query",
            "type": "string",
            "description": "Restaurant name or keyword to search for (mode=search)."
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "City name to browse restaurants in (mode=byCity), e.g. `Paris`, `Tokyo`, `New York`."
          },
          "country": {
            "title": "Country",
            "enum": [
              "",
              "france",
              "japan",
              "united-states",
              "united-kingdom",
              "italy",
              "spain",
              "germany",
              "switzerland",
              "belgium",
              "netherlands",
              "austria",
              "sweden",
              "norway",
              "denmark",
              "portugal",
              "singapore",
              "hong-kong-macau",
              "south-korea",
              "china",
              "taiwan",
              "thailand",
              "malaysia",
              "brazil",
              "mexico",
              "canada",
              "australia"
            ],
            "type": "string",
            "description": "Filter by country slug used in Michelin Guide URLs. Use lowercase slug format (e.g. 'france', 'japan', 'united-states'). The value is automatically normalized to lowercase if entered manually.",
            "default": ""
          },
          "starFilter": {
            "title": "Star / distinction filter",
            "enum": [
              "",
              "1",
              "2",
              "3",
              "bib",
              "selected"
            ],
            "type": "string",
            "description": "Filter restaurants by Michelin distinction (applies to all modes).",
            "default": ""
          },
          "cuisineFilter": {
            "title": "Cuisine filter",
            "enum": [
              "",
              "classic",
              "traditional",
              "french",
              "japanese",
              "italian",
              "chinese",
              "mediterranean",
              "contemporary",
              "creative",
              "seafood",
              "steakhouse",
              "sushi",
              "thai",
              "korean",
              "indian",
              "spanish",
              "american",
              "european",
              "modern-british",
              "cantonese",
              "dim-sum",
              "ramen",
              "vegetarian"
            ],
            "type": "string",
            "description": "Filter by cuisine type. Note: 'Classic Cuisine' and 'Traditional Cuisine' are how Michelin labels most French/regional cuisine in France — use those options to find French cuisine restaurants in Paris, Lyon, etc. 'French' matches restaurants explicitly labeled 'French' by Michelin, which is more common outside France.",
            "default": ""
          },
          "startUrls": {
            "title": "Start URLs (mode=byUrl)",
            "type": "array",
            "description": "List of Michelin Guide restaurant page URLs to scrape (mode=byUrl). Each item must have a `url` key, e.g. `https://guide.michelin.com/en/ile-de-france/paris/restaurant/guy-savoy`.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum number of restaurant records to emit.",
            "default": 20
          },
          "includeDetails": {
            "title": "Fetch restaurant detail pages",
            "type": "boolean",
            "description": "If enabled, the scraper visits each individual restaurant page for additional data (phone, website, geo-coordinates, opening hours, full description). Note: detail pages may be rate-limited or blocked in some regions; listing data is always scraped regardless of this setting.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify proxy settings. AUTO datacenter proxy is used by default for Michelin Guide bot-detection bypass.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}