IWannaWalk Get an API key
Walk · Transit · Bike — scored 0–100 for any US address or landmark

Know a neighborhood before you stand in it.

Type a street address — or just a name: Times Square, the Alamo, Mount Rushmore. IWannaWalk measures every errand you'd make on foot, by bus or rail, and by bike — and hands back three scores you can read at a glance.

No address handy?

Every score arrives with its band — the sentence that tells you what the number means.

Scores

Sample report — illustrative values

1600 Pennsylvania Ave NW, Washington, DC

89

Walk Score

Line under construction Not measured

Substantial

Foot-first, car optional — Illustrative sample value. Search an address for its score.

0 · Negligible 30 · Minimal 50 · Moderate 70 · Substantial 90 · Complete 100 89
89

Transit Score

Line under construction Not measured

Substantial

Stops a short stroll away — Illustrative sample value. Search an address for its score.

0 · Negligible 30 · Minimal 50 · Moderate 70 · Substantial 90 · Complete 100 89
78

Bike Score

Line under construction Not measured

Substantial

A broad calm-street network — Illustrative sample value. Search an address for its score.

0 · Negligible 30 · Minimal 50 · Moderate 70 · Substantial 90 · Complete 100 78

How to read the lines

  • Measured here Routed street by street from this address, over a network we have built for its region.
  • Area estimate A national model's read on the area around this address. Same 0–100 scale, coarser instrument — and the band says only what it measured.
  • Not measured A number no engine of ours produced — the illustrative sample this page opens with, or a value held for an address. Same 0–100 scale, drawn dotted: read it as indicative, not as a measurement of this address.
  • Line not running Neither could answer for this address, so no score is published. The hatching means this and nothing else.

How the score is built

Two instruments, one scale

A score you'd bet a lease on has to be boring underneath: the same measurements, in the same order, every time. Here is the whole route — the one we run in every region whose street network we have built.

There, Transit Score weights each nearby route by mode and true frequency, and Bike Score adds lane quality and hill grade.

For places where we haven't fully mapped yet, the scores come from a coarser national model instead. It reads the area around an address instead of routing from that address specifically: for transit it knows how far the nearest stop; for biking, how much calm street there is to ride, regardless of elevation change.

Same 0–100 scale, same band names, and a band sentence that claims only what that instrument measured. Every score on this page carries the difference on its line, and every API response carries it as a field.

  1. First stop

    Map every destination

    Groceries, schools, parks, restaurants, pharmacies, transit stops and bike lanes, refreshed nightly.

  2. Second stop

    Measure real routes

    Distance is walked, not flown: we route along the actual street network and penalize missing sidewalks, hostile crossings and steep grades.

  3. Third stop

    Decay with distance

    An errand 5 minutes away counts fully; at 30 minutes it counts for almost nothing. Each amenity category carries its own weight.

  4. Terminus

    Normalize to 0–100

    Raw points become a percentile-anchored score, so 87 in Portland means what 87 means in Pittsburgh — then the band names it.

Every listing deserves a score. Put ours in yours.

One GET request returns all three scores with band names and plain-language descriptions, ready to render. Real-estate portals, relocation tools and delivery planners ship it in an afternoon.

Every mode also says how it was produced. fidelity is regional where we routed the street network around the address, interim where the national model estimated it for the surrounding area, and none where neither could answer and the score is null. Branch on that field — never on the band wording, which narrows to match the instrument.

Every response also carries data_providers: the credits owed for that one result, and nothing owed for somebody else's. An entry gives the exact wording to print, the modes whose answer that source fed, and where we discharge it — result next to the score itself, site_footer for the standing OpenStreetMap credit our own footer carries. If you display these scores, both are yours to give. An empty list means the answer owes none.

GET https://iwannawalk.com/v1/score?address=1600+Pennsylvania+Ave+NW+Washington+DC

{
  "address": "1600 Pennsylvania Ave NW, Washington, DC",
  "walk": {
    "score": 89, "band": "Substantial",
    "band_description": "Foot-first, car optional",
    "fidelity": "interim"
  },
  "transit": {
    "score": 89, "band": "Substantial",
    "band_description": "Stops a short stroll away",
    "status": "proximity_only", "nearest_stop_m": 176,
    "fidelity": "interim"
  },
  "bike": {
    "score": 78, "band": "Substantial",
    "band_description": "A broad calm-street network",
    "status": "low_stress_interim",
    "excludes": ["terrain"],
    "fidelity": "interim"
  },
  "data_providers": [
    { "attribution": "© OpenStreetMap contributors",
      "modes": ["bike"], "discharged_by": "site_footer" }
  ],
  "scored_at": "2026-08-13T02:41:17+00:00"  // lookup time
}

Get an API key

Free tier — 5,000 calls a day, no card

Ask for a key with your email address; it comes back in the response. It is shown once — store it, then send it as an X-API-Key header on every call.

The same key answers for itself: check what you have spent today, swap it for a fresh one if it leaks, or delete it. All of it takes effect on your next request.

  1. POST /v1/keys Shown once

    Ask for a key. The response is the only copy.

    $ curl -X POST https://iwannawalk.com/v1/keys \
           -H 'Content-Type: application/json' \
           -d '{"email": "you@example.com"}'
    Response: → {"key": "iww_…", "tier": "free", "calls_per_day": 5000}

    The address is how we reach you about the key — we do not verify it and nothing is authorised by it. Signups are limited per caller per day.

  2. GET /v1/score

    Use it.

    $ curl -H 'X-API-Key: iww_…' \
           'https://iwannawalk.com/v1/score?address=1600+Pennsylvania+Ave+NW+Washington+DC'
  3. GET /v1/keys/usage

    See today's usage. This call is free.

    $ curl -H 'X-API-Key: iww_…' https://iwannawalk.com/v1/keys/usage
    Response: → {"used": 128, "calls_per_day": 5000, "remaining": 4872}
  4. POST /v1/keys/rotate

    Leaked it? Rotate. The new key is returned once, the old one stops working, today's usage carries over.

    $ curl -X POST -H 'X-API-Key: iww_…' https://iwannawalk.com/v1/keys/rotate
  5. DELETE /v1/keys

    Done with it? Revoke.

    $ curl -X DELETE -H 'X-API-Key: iww_…' https://iwannawalk.com/v1/keys