Japan buys ¥25 trillion a year through public tenders.
All of it announced in Japanese only.
This Actor searches Japan's official procurement portal, reads every announcement with an LLM, and returns structured JSON — deadlines, qualification grades, region requirements. Every extracted value ships with a verbatim quote from the source text. If a value can't be verified against the announcement, you get null — never a guess.
Not a scraper. A bilingual analyst.
入札公告
1 入札参加資格
韮崎市競争入札参加有資格者名簿【工事:管】に登録されている者。韮崎市内に本社(本店)がある者。最新の総合評点が600点以上の者。
2 日程
質問提出期限令和8年7月14日 午後3時。入札参加申出受付期間令和8年7月6日 ~ 7月17日 午後3時。入札書受付日時令和8年7月23日(木) 午前10時00分。開札は、入札書提出の締め切り後「共通事項」指定の時刻に即日開札する。
朱 This is a real record — a water-main relocation tender from Nirasaki City, Yamanashi. Verification is mechanical: each citation is string-matched against the source after normalization. Values that fail the match are nulled and the record's confidence drops, so you can route doubtful records to human review.
The data everyone else skips
JETRO and “Sell to State” style services cover Japan's WTO-threshold, central-government tenders in English. Everything below that line — the bulk of contract volume — has never been machine-readable in any language.
The only structured English feed for Japan's municipal & sub-threshold tenders
The long tail of city, town and village procurement that never gets translated. Search it by keyword, prefecture and category through the portal's official API — no fragile DOM scraping.
Every value ships with a verbatim citation
Extraction is only half the pipeline. The other half verifies each value against the announcement text, applies deterministic guards, and returns null rather than a guess. Corrections are disclosed in remediations.
We classify what the portal doesn't
About 52% of portal records carry no category tag. The AI classifies every tender (construction / goods / services + a short industry label) and writes a one-line summary you can filter on.
From official API to citation-backed JSON, in six steps
Query the official portal API
Keyword (full-text, portal syntax passes through), prefecture codes, category, date range — against 官公需情報ポータル (kkj.go.jp), rate-limited and sequential.
Deduplicate twice
By portal key and by normalized title + issuing organization — the same tender really does appear under multiple entries and multiple queries. incrementalMode keeps scheduled runs new-items-only.
Secure the full text
85% of announcements resolve from the API body alone. Otherwise: fetch the source PDF/HTML, detect index-page decoys, fall back to the attached 入札公告 document.
LLM extraction
Temperature 0, tool-forced schema. Four deadline types, grade system, roster registration, region requirement, licenses, performance period, bidding method, summary.
Verify every quote
Each citation is mechanically matched against the source. Duplicate-copy habits, garbled-table swaps and vocabulary mix-ins are caught by deterministic guards — and disclosed in remediations.
Ship — or null
Verified records ship with confidence. Unverifiable values become null. Failed fetches are labeled honestly (fetch_failed, list_page) and never billed the AI fee.
Measured, not promised
Numbers below are from pipeline v2.4, measured on a frozen set of 31 real tender documents — national and municipal issuers — with human-adjudicated ground truth. We publish them because you can hold us to them.
| Field | Accuracy |
|---|---|
| Bid opening date | 100% (31/31) |
| Bid submission deadline | 96.8% (30/31) |
| Qualification grade | 96.7% (29/30) |
| Participation deadline | 93.5% (29/31) |
| Roster registration requirement | 93.5% (29/31) |
| Region requirement | 93.5% (29/31) |
| Fabricated grades / invented values | 0 |
How we measured
Blind double extraction by two different models → mechanical verbatim matching → 152 cells adjudicated by a human against the original announcements.
The resulting frozen 31-document suite re-runs as a regression gate on every pipeline change — a change that degrades any field doesn't ship.
Per record, confidence exposes the share of fields whose citation verified, and remediations logs every deterministic correction — so low-confidence records can be routed to review automatically.
About ¥6 per tender, read and structured for you
Compare that to building a Japanese-capable extraction pipeline yourself, subscribing to a domestic service at tens of thousands of yen per month — or reading the PDFs.
Every result pushed to the dataset: portal metadata, source URL, attachments. Set enrich: false and this is all you pay.
AI extraction succeeded (enrichmentStatus: "ok"). Deadlines, grades, region requirements, citations, confidence. Failed records are never charged this fee.
Bring your own Anthropic API key (llmApiKey, stored as a secret) and pay LLM costs directly — the heavy-user rate.
every morning ≈ $17.7/mo
≈ 300 new items a month, structured and deduplicated before you wake up. Try before you buy: the Actor has no separate free tier, but Apify grants free platform credits to new accounts — your first runs fit inside them, no credit card required. The default input is a small, high-quality first run (keywords: ["清掃"], maxItems: 20).
Built to be called by agents, not just people
Connect Claude, ChatGPT or any MCP-capable agent to Apify's MCP server and this Actor becomes a tool. The input schema is written to be self-explanatory to LLMs — an agent can fill it correctly on the first try.
You say
"Using the japan-tender-scraper actor, find cleaning-service tenders in Kanagawa announced this week and list bid deadlines with their source quotes."
The agent runs
Read this before you buy
The same discipline that nulls unverifiable values applies to our own marketing. These are the known limits, in writing.
Only tenders listed on 官公需情報ポータル. The portal aggregates national and local procurement, but listing completeness varies by municipality — we do not promise exhaustiveness.
Records appear on the portal about one day after the issuing organization publishes them. Anchor monitoring SLAs to portal registration time, not original publication.
~52% of portal records carry no category. Prefer keyword search over the category filter, and use the AI-extracted industryCategory.
Some announcements publish schedules in tables that collapse when converted to text — the dominant source of remaining errors. Such records typically surface with lower confidence or entries in remediations.
公告を「取ってくる」のではなく、読解して返す。
官公需情報ポータル(kkj.go.jp)の公式APIを検索し、公告本文をAIが読解して構造化JSONで返すApify Actorです。抽出した全フィールドに原文からの逐語引用(sourceQuotes)が付くため、値を検算できます。根拠を示せない値は推測せず null で返します。
- 検索
- キーワード(例: 清掃・警備・舗装)/都道府県コード/カテゴリ/公告日範囲。ポータルのAND・ANDNOT構文も透過。
- 抽出
- 質問締切・参加申請期限・入札書提出期限・開札日/等級(統一資格・自治体格付・経審評点)/名簿登載要否/地域要件/許認可/履行期間/電子入札/落札方式/業種分類/要約。
- 精度
- 凍結31実文書+人裁定による実測で、開札100%・入札書96.8%・等級96.7%・参加/名簿/地域93.5%・捏造0(v2.4)。confidence と remediations を全件開示。
- 料金
- 構造化成功1件 $0.059(約6円)。自前のAnthropicキー持ち込み(BYOK)なら $0.010/件。失敗レコードにAI課金なし。Apifyが新規アカウントに付与する無料クレジットの範囲で、カード登録なしに試せます。
- 定期監視
- incrementalMode(既定ON)で同一条件の2回目以降は新着のみ。スケジュール+Webhookで毎朝の監視フィードに。
- 制約(正直に)
- ポータル収載分のみ/掲載まで約1日遅延/カテゴリ未タグ約52%のためキーワード検索推奨/表組み崩れPDFでは期限帰属に既知の限界。