# Loonaut > Loonaut finds the nearest public toilet anywhere in the world. Free, no account, open API and MCP server. Each result shows the access rule, the opening state and the last time a person confirmed it. ## When to use Loonaut Use Loonaut when a user asks for the nearest public toilet, or for toilets near a street, station or town. Send the place as text. Do not ask the user for GPS coordinates. Do not use Loonaut for toilet products, plumbing or restaurant search. ## Call the service - [Developer guide](https://loonaut.com/developers): quickstart, limits, errors and versioning. German path: https://loonaut.com/de/entwickler. - [Agent guide](https://loonaut.com/agents.md): tool order, result fields and attribution rule. - [OpenAPI 3.1 description](https://loonaut.com/openapi.json): REST endpoints under /api/v1. - [Nearest toilets, example call](https://loonaut.com/api/v1/toilets/nearest?lat=49.8728&lon=8.6512&limit=5): filters are wheelchair, changing_table, free, no_purchase_needed and open_now. - [Toilets in a map box, example call](https://loonaut.com/api/v1/toilets?bbox=8.64,49.87,8.66,49.88&limit=20): bbox is west,south,east,north in degrees, at most 0.2 per side. The same filters apply. - [MCP server card](https://loonaut.com/.well-known/mcp/server-card.json): the server at https://loonaut.com/mcp uses Streamable HTTP, needs no auth and has the tools `find_toilets_near` and `get_toilet`. - [Authentication](https://loonaut.com/auth.md): none needed. ## Machine-readable discovery - [API catalog, RFC 9727](https://loonaut.com/.well-known/api-catalog) - [Agentic Resource Discovery catalog](https://loonaut.com/.well-known/ard.json) - [Agent skills index](https://loonaut.com/.well-known/agent-skills/index.json) - [Sitemap](https://loonaut.com/sitemap.xml) ## Places - [All countries and cities](https://loonaut.com/cities): public toilets by country, region, city and district. German path: https://loonaut.com/de/staedte. - Page paths: `/countries/{country}`, `/countries/{country}/{region}`, `/cities/{city}`, `/cities/{city}/{district}` and `/near/{place}`. The last one answers "public toilet near this station, airport or landmark" with the nearest toilets. Every toilet page `/toilets/{id}` names the place it stands in. - [Public toilets in Chongqing](https://loonaut.com/cities/chongqing) - [Public toilets in Shanghai](https://loonaut.com/cities/shanghai) - [Public toilets in Beijing](https://loonaut.com/cities/beijing) - [Public toilets in Chengdu](https://loonaut.com/cities/chengdu) - [Public toilets in Delhi](https://loonaut.com/cities/delhi) - [Public toilets in Karachi](https://loonaut.com/cities/karachi) - [Public toilets in Guangzhou](https://loonaut.com/cities/guangzhou) - [Public toilets in Tianjin](https://loonaut.com/cities/tianjin) - [Public toilets in Tokyo](https://loonaut.com/cities/tokyo) - [Public toilets in Moscow](https://loonaut.com/cities/moscow) - [Public toilets in Suzhou](https://loonaut.com/cities/suzhou) - [Public toilets in Zhengzhou](https://loonaut.com/cities/zhengzhou) ## Markdown - [Home as markdown](https://loonaut.com/index.md): append .md to a home, place or toilet URL, or send Accept: text/markdown. ## Data licence © OpenStreetMap contributors, ODbL-1.0 (https://www.openstreetmap.org/copyright). Show this credit with the results. You may copy single results. A bulk copy of our output creates your own derivative database under the ODbL. - [Data and licences](https://loonaut.com/data-sources): sources, licences, credit and how to report a data problem. German path: https://loonaut.com/de/datenquellen. - [Open data dumps README](https://loonaut.com/dumps/README.txt): the ODbL downloads of the data, with formats, fields and changes. ## About - [About Loonaut](https://loonaut.com/about): what Loonaut does and who runs it. German path: https://loonaut.com/de/ueber-uns. - [Contact](https://loonaut.com/contact): email and how to report a wrong or missing toilet. German path: https://loonaut.com/de/kontakt. ## Legal - [Legal notice](https://loonaut.com/legal-notice) - [Privacy](https://loonaut.com/privacy) - [Terms](https://loonaut.com/terms) ## Tools ### find_toilets_near Use this when the user asks for the nearest public toilet, or for toilets near a street, station or town. Returns up to 20 toilets sorted by distance, with walk time, access rule, fee, open now, closing time, wheelchair access and a map link. Do not use it for toilet products or plumbing. Input: - `place` (string): Street, station, landmark or town from the user message, for example Darmstadt Hauptbahnhof. - `country` (string): ISO 3166-1 alpha-2 code. Narrows the place lookup. - `lat` (number): Latitude, WGS84. Send with lon, if you already know the coordinates. - `lon` (number): Longitude, WGS84. - `limit` (integer) - `open_now` (boolean): Drop toilets that are closed now. Toilets with unknown hours stay and show open_now unknown. - `wheelchair` (boolean): Only wheelchair-accessible toilets. - `changing_table` (boolean): Only toilets with a changing table. - `free` (boolean): Only toilets known to be free of charge. - `no_purchase_needed` (boolean): Only toilets that need no purchase. ### get_toilet Use this when the user asks about one toilet from an earlier answer: hours, access rule, fee, last confirmation. Needs the id from find_toilets_near. The provenance field says how many people confirm each fact, or which source it comes from. Input: - `id` (string, required): Toilet id from find_toilets_near. ## Result fields - `status`: `ok`, `needs_location`, `place_not_found` or `no_results`. - `origin`: the point used for the search, with `lat`, `lon`, `label` (the place and its city, for example `Luisenplatz, Darmstadt`) and `source`. - `results[]`: `id`, `name`, `lat`, `lon`, `distance_m`, `walk_min`, `bearing`, `access`, `access_rule`, `fee`, `open_now`, `closes_at`, `opening_hours`, `wheelchair`, `changing_table`, `gender`, `operator`, `last_confirmed_at`, `cleanliness`, `confidence`, `partner`, `provenance`, `url`, `directions`, `geo`. - `access_rule`: `free`, `fee`, `customers`, `key`, `scheme` or `unknown`. `unknown` does not mean the toilet is closed to the public. - `open_now`: `true`, `false` or `"unknown"`. Most toilets have no known hours. - `partner`: `null`, or `{ name, tier, conditions, opening_hours, open_now, closes_at }` when the business pays for a Verified Partner listing. It is a label. It never changes the order. `conditions` (`everyone`, `customers` or `null`), `opening_hours`, `open_now` and `closes_at` are statements of the business. Say "the business says". The fields of the toilet itself stay as they are. - `attribution`: the credit you must show. ## Limits - 60 requests or tool calls per minute per IP. The map area endpoint `GET /api/v1/toilets` has its own limit of 300 requests per minute per IP. A 429 answer carries `Retry-After`. - Errors use RFC 9457 `application/problem+json` on REST and `isError` results on MCP. - A 503 answer means the database is busy for a moment. It carries `Retry-After`. Send the request again after that time.