For stories, research and products

Use the index.

Take a result, its sources and its limits together.

Keep the regional label

A result you can cite.

These links use the selected country, jurisdiction and price measure. They show current published inputs.

Japan — Tokyo

2h 27m

For one month of Intelligence Hours Index

verifiedstatutoryRank #12 of 25

US list price · before taxes · gross minimum wage · As of 2026-10-01

Price verified 2026-09-28 · Wage verified 2026-09-28 · FX 2026-09-30

Sources behind this result (8)

Keep this citation with your export.

Missing work time is null, never zero. Estimated references and price scenarios must keep their labels; they are excluded from official ranks.

Result and image links update with approved data. For an auditable quotation, retain the downloaded JSON or CSV, retrieval timestamp, source dates and observation IDs. A share link is not an immutable snapshot.

Personal wage calculations stay in the browser. They are excluded from these links, citations and exports.

For a quotation that stays fixed

Use a recorded revision.

Load the saved history for the selection above, then keep a specific recorded date and revision with your citation. The latest record can be earlier than today.

Recorded history loads only when requested. Some selections have no saved records.

Use the official ordering

Download current rankings.

The same ranks as the website, with full result inputs and source records. No need to rebuild the ranking from rounded hours.

Full country reference data · basket-v1

Current research-preview reference results for each catalogued country's default wage jurisdiction, using the fixed ChatGPT Plus, Claude Pro and Google AI Pro basket. US web list prices before tax are translated into gross-wage work hours. Downloads retain null values, estimated and collective references, source dates and observation IDs. Catalog scope is not complete verified coverage. Current results can change or use a labelled saved published dataset; recorded revisions and historical replication data are separate.

These two downloads keep the official basket across all catalogued countries, regardless of the selection above. They include results outside the official ranking. Free dataset access does not establish a reuse license; see the reuse terms.

Rank 1 requires the fewest hours. Only capital jurisdictions with a statutory wage and calculable, non-scenario price enter the ranking. Exact ties share their competition rank. Estimates, collective references and unavailable values remain outside it; stale inputs keep their status labels.

Ranking downloads use the selected price measure across all eligible capitals; they do not filter to the country or region above. They accept plan only and serve current published data. The CSV includes rank and rankedCount; JSON nests each complete result under result.

Public, read-only endpoints

Build with the data.

No API key is required. Use the returned dates and data-quality labels, and cache results instead of polling on every page view.

Discover valid IDs.

The catalog lists countries, wage jurisdictions, active individual plans and effective baskets. Use its IDs rather than scraping the calculator.

Read the evidence.

JSON includes inputs, sources and observation IDs. CSV leaves missing fields blank. meta.dataDelivery reports whether a response uses live reads or a saved published dataset.

Keep history honest.

Past dates require an existing recorded snapshot. No backfilled time series is created. The selected history endpoint may return no records or an explicit outage response. Load a recorded revision to keep a fixed result with your citation.

Endpoints, parameters and errors
Public API v1
EndpointAccepted parametersResponse
/api/v1/indexcountry, region, plan, datedata array of full results + meta
/api/v1/export.csvSame as indexOne result per row; provenance columns retained
/api/v1/historycountry required; optional region, plan, dateLatest revision per recorded day, including snapshotId and stored fingerprint; date validates a recorded index date and does not filter the returned history series
/api/v1/snapshots/:id
/api/v1/snapshots/:id/export.csv
No query parameters; URL-encode the complete snapshot IDFixed recorded date and revision with its receipt, stored result and provenance
/api/v1/catalogNoneCountry, jurisdiction, plan and basket definitions
/api/v1/rankings
/api/v1/rankings.csv
plan onlyCurrent capital ranks, exact ties and complete result provenance

country is an uppercase ISO code. region is a catalog jurisdiction ID and requires its matching country. plan defaults to basket-v1. Without a country, the index and CSV return the default jurisdiction for every country.

date=YYYY-MM-DD requests a recorded index snapshot. Future dates are rejected. The current ranking endpoints reject historical dates and price scenarios. The all-paid-plans median (basket-all-paid-v1) is a separate comparison measure, not the fixed official three-plan basket.

Errors: invalid, mismatched or unsupported queries return 400; an out-of-scope country or absent recorded snapshot returns 404; temporarily unavailable recorded history or revisions return 503. Check the HTTP status before parsing data. Do not convert an error into zero hours.

Current dataset reads use a 60-second shared-cache window. A saved published response keeps original verification dates and declares its delivery mode. These are reference observations with editorial review, not a guaranteed real-time feed.

Each fixed revision JSON or CSV response preserves its own immutable bytes and uses immutable response caching. Successful GET requests return the full body with HTTP 200 and X-Content-SHA256, a SHA-256 checksum of the decoded, final UTF-8 response body. Requests with If-None-Match also return a full 200 response rather than 304; no ETag is issued. Save the response and its checksum, or compare X-Content-SHA256 with a saved copy when needed.

The stored fingerprint describes the original source result and is not a file checksum. History lists the latest revision per day; retained earlier revisions remain addressable by their snapshot IDs. Missing or unavailable recorded data never triggers a recalculation from current inputs.

The public endpoints support cross-origin GET and HEAD without credentials. Authentication and internal routes are outside this contract; write requests are not allowed.

Result fields and data-quality labels
FieldsMeaning
hours, workdaysRequired work time; workdays use an eight-hour display unit. null means unavailable.
jurisdictionId, jurisdictionName, wageBasisThe actual wage jurisdiction and basis. Capital results are not national average wages.
priceUsd, priceBasis, priceNoteMonthly US web list price, before taxes. Scenarios retain explicit labels.
wageLocal, wageUsd, ratePerUsdGross hourly wage and reference rate in local currency units per USD.
status, reasonverified, stale, reference or unavailable. Preserve the explanation.
asOf, fxDate, verification datesCalculation date and underlying input dates. They describe different things.
availability, availabilityDetailsRecorded consumer-web access evidence; a price does not confirm local paid checkout or current service health.
sources, observationIds, versionsEvidence pointers and calculation/basket versions to retain with reused data.
JavaScript example for the selected result
const response = await fetch("https://www.intelligence-hours.org/api/v1/index?country=JP&region=JP-13&plan=basket-v1");
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const payload = await response.json();
const row = payload.data[0];
if (!row) throw new Error('No result returned');
const saved = payload.meta.dataDelivery?.mode === 'snapshot';
if (row.hours === null || row.status === 'unavailable') {
  console.warn(row.reason ?? 'Work time unavailable');
} else {
  // Preserve reference/stale labels and the saved-data notice.
  console.log({ hours: row.hours, status: row.status, saved,
    jurisdiction: row.jurisdictionName, asOf: row.asOf,
    wageBasis: row.wageBasis, dataDelivery: payload.meta.dataDelivery,
    sources: row.sources, observationIds: row.observationIds });
}
Python example for the selected result
import json
from urllib.request import urlopen

# HTTP errors raise an exception; do not turn them into zero hours.
with urlopen("https://www.intelligence-hours.org/api/v1/index?country=JP&region=JP-13&plan=basket-v1", timeout=20) as response:
    payload = json.load(response)
row = payload["data"][0]
delivery = payload["meta"].get("dataDelivery", {})
if row["hours"] is None or row["status"] == "unavailable":
    print(row.get("reason") or "Work time unavailable")
else:
    print({"hours": row["hours"], "status": row["status"],
           "saved": delivery.get("mode") == "snapshot",
           "jurisdiction": row["jurisdictionName"], "asOf": row["asOf"],
           "wageBasis": row["wageBasis"], "dataDelivery": delivery,
           "sources": row["sources"], "observationIds": row["observationIds"]})
Credit the measure and its evidence

Citation and reuse terms.

Always identify Intelligence Hours, the selected price measure, wage jurisdiction, observation date and data status. Keep the US-price, pre-tax, gross-wage basis visible. IH measures paid-subscription affordability; it does not measure model quality, labor replacement or national productivity directly.

The historical Zenodo replication deposit has its own version and licensing terms. It is separate from the website’s current country data and API. Its DOI identifies that deposited data and code, not the current live index or the paper’s editorial update.

Public download access does not establish a blanket reuse license for the live dataset. For republication terms, integrations or source corrections, contact about@intelligence-hours.org.

Read the methodology and research citations