Michelin API: Search Michelin Guide restaurants
Lists Michelin Guide restaurants in a city or region, in Guide order, optionally filtered by distinction and cuisine, with each restaurant's address, description and photo. Results may include the surrounding area as labeled by the Guide.
Unofficial. Not affiliated with or endorsed by Michelin.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- City, required
city City or region to search, for example Paris or New York.
Paris
- Cuisine optional
cuisine Cuisine to include, for example Japanese; use any for all cuisines.
any (default)
- Distinction optional
distinction Distinction to include, for example two_stars.
bib_gourmand
One of
any,three_stars,two_stars,one_star,bib_gourmand,recommended. Defaultany.- Max Results optional
max_results Maximum number of restaurants to return, for example 20.
4
Whole number from 1 to 100. Default
20.
Input as JSON
{ "city": "Paris", "distinction": "bib_gourmand", "max_results": 4}Output
{ "restaurants": [ { "city": "Paris", "name": "Kodawari Ramen - Yokochō", "address": "29 rue Mazarine, Paris, 75006, France", "cuisine": "Japanese", "green_star": false, "photo_link": "https://prod-pics.guide.michelin.com/api/public/content/e71c34e9565b4a36b2592069d3ffc742.jpg?format=webp" , "description": "In a decor dripping in nods to urban Tokyo (lanterns, fake street fronts and a soundtrack of street noises), the visitor is transported to Japan. Liquid (shio) or thick (shoyu) broths, made from free-range poultry and artisanal Shibanuma soy sauce, simmer on the stove. The ramen, made with wheat tha…", "distinction": "Bib Gourmand", "price_range": "€", "michelin_guide_link": "https://guide.michelin.com/us/en/ile-de-france/paris/restaurant/kodawari-ramen" }, { "city": "Paris", "name": "La Table de Mee", "address": "6 rue des Ciseaux, Paris, 75006, France", "cuisine": "Korean", "green_star": false, "photo_link": "https://prod-pics.guide.michelin.com/api/public/content/dc12003e1e924f64ba29b8451dfca582.jpg?format=webp" , "description": "In a stripped-back interior dominated by wood (where you can sit at the counter to watch the chef at work at his large plancha), this Korean restaurant celebrates the country's specialities. Spicy flavours and sauces are the order of the day, courtesy of the obligatory kimchi, Korean fried chicken (…", "distinction": "Bib Gourmand", "price_range": "€€", "michelin_guide_link": "https://guide.michelin.com/us/en/ile-de-france/paris/restaurant/la-table-de-mee" }, { "city": "Paris", "name": "Mắm From Hanoï", "address": "39 rue de Cléry, Paris, 75002, France", "cuisine": "Vietnamese", "green_star": false, "photo_link": "https://prod-pics.guide.michelin.com/api/public/content/ba4e856375594cee93ced90313ed82d3.jpg?format=webp" , "description": "In a corner of the Sentier neighbourhood, this authentic Vietnamese restaurant is a hit, and rightly so (book several days in advance). The Hanoi-born couple at the helm prepare bona fide Northern Vietnamese cuisine – the word mắm refers to a fish-based condiment that is very popular there. The vege…", "distinction": "Bib Gourmand", "price_range": "€€", "michelin_guide_link": "https://guide.michelin.com/us/en/ile-de-france/paris/restaurant/mam-from-hanoi" } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"guide.michelin.com/search_restaurants","input":{"city":"Paris","distinction":"bib_gourmand","max_results":4}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "guide.michelin.com/search_restaurants" , "input": { "city": "Paris", "distinction": "bib_gourmand", "max_results": 4 }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "guide.michelin.com/search_restaurants" , "input": { "city": "Paris", "distinction": "bib_gourmand", "max_results": 4 } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run guide.michelin.com/search_restaurants# with {"city":"Paris","distinction":"bib_gourmand","max_results":4}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "city" ], "properties": { "city": { "type": "string", "description": "City or region to search, for example Paris or New York." }, "cuisine": { "type": "string", "default": "any", "description": "Cuisine to include, for example Japanese; use any for all cuisines." }, "distinction": { "enum": [ "any", "three_stars", "two_stars", "one_star", "bib_gourmand", "recommended" ], "type": "string", "default": "any", "description": "Distinction to include, for example two_stars." }, "max_results": { "type": "integer", "default": 20, "maximum": 100, "minimum": 1, "description": "Maximum number of restaurants to return, for example 20." } }}Output schema
{ "type": "object", "required": [ "restaurants" ], "properties": { "restaurants": { "type": "array", "items": { "type": "object", "required": [ "name", "distinction", "green_star", "cuisine", "price_range", "address", "city", "description", "photo_link", "michelin_guide_link" ], "properties": { "city": { "type": [ "string", "null" ] }, "name": { "type": "string" }, "address": { "type": [ "string", "null" ] }, "cuisine": { "type": [ "string", "null" ] }, "green_star": { "type": "boolean" }, "photo_link": { "type": [ "string", "null" ] }, "description": { "type": [ "string", "null" ] }, "distinction": { "type": "string" }, "price_range": { "type": [ "string", "null" ] }, "michelin_guide_link": { "type": "string" } }, "additionalProperties": false } } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
guide.michelin.com/search_restaurants- Returns
- name, distinction, green star, cuisine, price range, address, city, description, photo link, Guide link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method guide.michelin.com/search_restaurants with the inputs above.
Ask your agent
- Which restaurants in Tokyo hold three Michelin stars? I'd like their addresses and a short description of each.
- Find Bib Gourmand spots in Chicago serving Mexican food, up to 10 of them, with price range and photos.
- Pull the Michelin Guide listings for Copenhagen, including any with a green star for sustainability.
- Show me 30 one-star restaurants in the Lyon area from michelin.com, with cuisine type and the Guide page link for each.
- I'm planning a trip to San Sebastián. What Japanese places does the michelin.com Guide recommend there, at any distinction level?
See more
Lists Tripadvisor's ranked restaurants in a city from the first results page, optionally filtered by cuisine and price category. Sponsored listings are left out; up to 30 restaurants with rating, review count, cuisines, price range and address.
tripadvisor.com/list_top_restaurantsFinds DoorDash restaurants delivering to a street address or ZIP code, optionally for a cuisine or dish, in DoorDash's search order. Fees and times reflect guest offers; the numeric fee is null when DoorDash shows no amount.
doordash.com/search_restaurantsFind restaurants delivering to an address in Uber Eats guest browsing order. Fees can be conditional for new users; displayed rating counts may be rounded.
ubereats.com/search_restaurantsFinds OpenTable restaurants with bookable slots within two hours of the selected time in a city or neighborhood, in OpenTable search order, optionally for one cuisine. Examines up to 300 listings; availability may change.
opentable.com/search_available_tablesGets a restaurant's public OpenTable profile by name or OpenTable link and city, including ratings, details, menu and photo links. Ratings and other fields can be missing when the restaurant does not publish them.
opentable.com/get_restaurantFinds GetYourGuide tours, tickets and activities in a city, optionally matching words, available on a day, sorted by popularity, price or rating, with prices, ratings and booking features.
getyourguide.com/search_activitiesFinds tours and experiences in a city on Viator, with optional keywords, date, currency and sorting. Prices are starting prices.
viator.com/search_toursFinds McDonald's restaurants within 50 miles of a US city, address or ZIP code, nearest first. Each result includes today's hours, services and directions. Open-now status follows the listed hours.
mcdonalds.com/search_restaurants