420 World Clock API — free, read-only, no key required

420 World Clock API

The world's only 4:20 API — and a friendly first API to learn on. Free and read-only. Ask it where it's 4:20 right now, who's next, what time it is in every zone, and what the law says in each country. No sign-up, no key.

Asking the API…

That line comes from the API itself, live, using the 5 lines of code shown under “Your first program” below.

What is an API?

An API is a way for one program to ask another program a question and get back an answer it can use.

Think of a restaurant. You don't walk into the kitchen; you give the waiter your order, and the waiter brings back your food. The API is the waiter:

Every address in this API is a GET request — it only reads. You can't change anything, so you can't break anything. Experiment freely.

Try it right now

Press a button. You'll see exactly what a program receives.

Pick a button above.

The addresses (endpoints)

AddressWhat you get back
/v1/nowIs it 4:20 anywhere right now, the closest place, what's next, and the next 7 moments in the countdown queue.
/v1/zones/America/New_YorkOne zone: its local time and minutes until its next 4:20.
/v1/zonesEvery zone on the map: local time, UTC offset, minutes from 4:20, minutes until its next 4:20.
/v1/lawsEvery country's status: legal, decriminalized, medical, illegal or death. Add ?status=legal to filter.
/v1/laws/NLOne country's full law card (use the two-letter code: NL, CA, SG…), with sources.
/v1/zones/Europe/Paris/lawThe local law card for one map zone (the zone's tzid from /v1/zones).
/v1/zones/America/Lima/placesEvery place named in a zone (Lima, Bogotá, Panama), each with its own law card and coordinates.
/v1/timeThe server's clock in milliseconds, cross-checked against the US Naval Observatory.
/v1/metaWhen the law data was last checked, plus the offline database's size and fingerprint.
/v1/laws.sqliteThe whole law database as one SQLite file, for apps that work offline.

Full technical reference: /docs (every field, try-it-out forms).

Your first program

1 · No code at all: your browser

Paste this into the address bar. Your browser shows the raw answer.

https://api.420.menow.us/v1/now

2 · JavaScript (a web page)

Save this as 420.html and open it. It shows where it's 4:20 next.

<p id="next">Loading…</p>
<script>
fetch('https://api.420.menow.us/v1/now')          // 1. ask the API
  .then(response => response.json())               // 2. read the JSON answer
  .then(data => {
    const n = data.next;                            // 3. pick the box you want
    document.getElementById('next').textContent =
      `Next 4:20: ${n.place} in ${n.minutes_until_next_420} minutes`;
  });
</script>

3 · Python

Uses only what comes with Python — nothing to install.

import json, urllib.request

with urllib.request.urlopen("https://api.420.menow.us/v1/now") as r:
    data = json.load(r)

if data["is_420_somewhere"]:
    print("It's 4:20 now in:", ", ".join(p["place"] for p in data["now_at_420"]))
print("Next up:", data["next"]["place"], "in", data["next"]["minutes_until_next_420"], "minutes")

4 · The command line

curl https://api.420.menow.us/v1/laws/CA

Reading the answer

Part of a /v1/now answer, with notes:

{
  "time_utc": "2026-10-25T16:05:12+00:00",   ← when the API answered (UTC)
  "is_420_somewhere": false,                 ← true during a 4:20 minute
  "next": {
    "place": "Chicago",
    "local_time": "3:05 PM",
    "minutes_until_next_420": 15             ← the countdown
  },
  "queue": [                                 ← the next moments, in order
    { "in_minutes": 15, "places": ["Chicago", "Lima"] },
    { "in_minutes": 45, "places": ["Kathmandu"] }
  ],
  "attribution": "Data: The Official 420 World Clock (420.menow.us) · LIBCSystems LLC"
}

Fair use