Docs

Send coordinates. Get back what the street looked like, in words.

michiyomi is open data: 1,914,490 public street photos of Tokyo, each described by AI. Query it by coordinate, street or town block through a REST API and an MCP server. The descriptions themselves are in Japanese.

  • No sign-up, no API key
  • Read-only
  • Words under CC BY 4.0 (no credit needed in answers)
  • Observation text in Japanese

AI agents can start with /llms.txt. Machine-readable definition: OpenAPI. Published release 2026-09-13-r2 (data as of 2026-09-13).

Quickstart

Get the three nearest photos within 150 m of the Ginza 4-chome crossing (latitude 35.6717, longitude 139.7647). No key needed.

curl "https://michiyomi.dev/v1/scenes/nearby?lat=35.6717&lon=139.7647&radius_m=150&limit=3"
Response (excerpt)Open raw ↗
{
  "snapshot": "2026-09-13-r2",
  "data_language": "ja",
  "license": { "id": "LicenseRef-michiyomi-layered", "attribution_en": "Source: michiyomi (michiyomi.dev), from Mapillary…", … },
  "count": 3,
  "results": [
    {
      "id": "964535250779795",
      "distance_m": 3,
      "capture_year": 2019,
      "ward": "中央区",
      "generation": { "id": "gen1-codex", … },
      "summary": "施設: 一般道路 / 歩道: 左=あり(分離歩道,5m), 右=あり(分離歩道,4m), 有効幅約4m, 点字ブロックあり, 車道幅約12m / …",
      "image_page": "https://www.mapillary.com/app/?pKey=964535250779795"
    },
    … 2 more
  ]
}

Each description reflects the year the photo was taken (capture_year). Widths and similar numbers are estimates from the photo, not measurements. See Before you rely on it.

Next: check coverage, then read the content

  1. Check what was recordedHow many photos exist near the point, and from which years. Zero means nobody photographed there, not that nothing is there.
    curl "https://michiyomi.dev/v1/coverage?lat=35.6717&lon=139.7647"
  2. Find nearby photosAs in the quickstart above. Nearest first, with a summary, the capture year and a link to the source photo.
  3. Read one record in fullUse include to choose the capture record (metadata), computed values (machine) and the AI reading (analysis).
    curl "https://michiyomi.dev/v1/scenes/964535250779795?include=metadata,machine,analysis"
  4. Look at streets, town blocks and changesFrom the same point, read the street and town-block kartes and the verified changes over time.
    curl "https://michiyomi.dev/v1/streets/nearby?lat=35.6717&lon=139.7647" curl "https://michiyomi.dev/v1/areas/at?lat=35.6717&lon=139.7647" curl "https://michiyomi.dev/v1/changes/nearby?lat=35.6717&lon=139.7647&radius_m=500"

Every endpoint and parameter is in the API reference.

Three ways in

All three run on the same public data.

For bulk analysis, use the Hugging Face dataset (Parquet) of the same release.

Japanese text, English interface

Field names, the OpenAPI definition (openapi.en.yaml), MCP tool definitions and these pages are in English. The observations themselves (summary, the values inside analysis, street and area kartes, change evidence) are in Japanese, and data_language is "ja" on every response.

  • When you quote a record, keep the Japanese source text. If you translate it, label it as a translation and record the method and date.
  • Keep image IDs as strings. Converting them to numbers can lose digits.

Before you rely on it

This data describes what was visible in a photo when it was taken. It is not a statement about current conditions or safety.
  1. State the capture year. Every record has capture_year. Do not present a 2019 description as the current state.
  2. Treat numbers as estimates. Widths and lane counts are estimated from one image, with a confidence label. They are not survey measurements, and confidence is the model's own judgement, not measured accuracy.
  3. Zero means not recorded. It does not mean nothing is there. Call coverage first.
  4. Do not fill in unknowns. The AI keeps three answers apart: none (absent from what the photo shows), unknown (in view but not decidable) and outside the frame. Keep them apart too.
  5. Coordinates are where the photo was taken, not where an object stands or where an entrance is.
  6. Generations are provenance labels, not quality rankings. Each record says which model family wrote it (generation, model).
  7. Changes are the ones that survived refutation. 3,618 changes were kept after a separate AI session tried to refute them (rebuilt in October 2026 with photos matched by position and heading). That is not independent third-party verification, and the share that survived is not an accuracy rate.

The detailed guide: Reading the data (layers, generations, confidence, coverage, kartes, changes, and how often the AI agrees with itself when it reads the same photo twice).

License and attribution

Observation data (text, structured data, changes over time) is under CC BY 4.0. No credit or logo is needed when you use it in AI answers, analyses or app displays, or quote individual records, and share-alike is not required. Show the attribution only when you redistribute records as data (files, databases, APIs for others). The earlier CC BY-SA 4.0 grant remains valid.

Attribution for redistribution

This is license.attribution_en in scene responses.

Source: michiyomi (michiyomi.dev), from Mapillary street-level photos, CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)

What keeps its original conditions

  • Coordinates, capture times and image IDs are Mapillary reference data: free per record, but michiyomi does not license them for bulk redistribution.
  • API responses do not contain photos. If you show one, credit its contributor (a link to image_page is enough) and CC BY-SA 4.0.
  • Streets and town blocks are an OpenStreetMap derivative database (ODbL 1.0). Public apps that build in street lookup, and bulk use, need “© OpenStreetMap contributors”.
  • School locations come from National Land Numerical Information P29; town-block boundaries and population from the 2020 census (e-Stat).
  • The language model OddEye is a separate release under Apache-2.0. The public data was not made with it.

Questions and removal requests (people, house nameplates or license plates in photos): contact@michiyomi.dev. You can also ask Mapillary to remove a source photo. Details: License and attribution.

Terms in short

Price and sign-up
Free. No sign-up and no API key.
What you can do
Read only. There are no write endpoints (GET only, except MCP and one POST search).
Rate limits
Per IP address: 300 REST requests and 120 MCP requests (/mcp) per 60 seconds. Over the limit you get 429 with retry-after: 60. Scenery search by impression (/explore/mcp) allows 20 searches per minute.
Format
JSON (UTF-8). Observation text is Japanese.
From the browser
CORS is open to all origins (access-control-allow-origin: *).
License
Observation data under CC BY 4.0; credit only when redistributing as data (details).
Uptime
No guarantee (no SLA).
Bulk analysis
The API is for nearby lookups. For everything at once, use the Parquet files on Hugging Face.

What you will not find

Knowing these up front prevents most misreadings.

  • Anywhere outside TokyoCoverage is the Tokyo Metropolis only (23 wards, Tama area, islands).
  • Current conditionsDescriptions reflect when each photo was taken. Nothing is real time.
  • MeasurementsWidths and lane counts are estimates from one photo, with confidence labels.
  • Places nobody photographedZero results mean no photos, not an empty street.
  • The photos themselvesResponses link to Mapillary through image_page instead.
  • PaginationNearby searches return at most 50 records. Move the center or radius to cover more.
  • English observation textObservations are Japanese only. Field names and definitions are English.
  • An uptime guaranteeThere is no SLA. The service may go down.

More

PageWhat it covers
Reading the dataThe three layers, generations, confidence, none versus unknown, coverage, kartes, changes, stability
License and attributionCurrent conditions and attribution texts ready to copy
The OddEye modelThe street-reading model released on 2026-10-03
WhitepaperDesign principles behind the data
Development historyWhen and from what michiyomi was built