Japan Public Tender Alerts (kkj.go.jp)
Pricing
from $3.00 / 1,000 new tender records
Japan Public Tender Alerts (kkj.go.jp)
官公需情報ポータル(kkj.go.jp)の入札公告をキーワード・都道府県・日付で検索し、前回実行からの新着差分を構造化データで返します。
Pricing
from $3.00 / 1,000 new tender records
Rating
0.0
(0)
Developer
Kameda Hyper
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Track new public-sector tender announcements published on Japan's government procurement portal (官公需情報ポータルサイト, kkj.go.jp), operated by Japan's Small and Medium Enterprise Agency (中小企業庁). This Actor is an independent tool and is not affiliated with or endorsed by kkj.go.jp or any Japanese government agency.
日本の中小企業庁が運営する官公需情報ポータルサイト(kkj.go.jp)の公開 API を使い、入札公告をキーワード・都道府県・日付で検索し、前回実行からの新着差分を構造化データで返す Actor です。本 Actor は非公式のツールであり、kkj.go.jp や日本政府機関とは無関係です。
What does this Actor do?
- Queries the official kkj.go.jp search API (public, no API key required) for tender announcements (入札公告)
- Filters by free-text keywords, prefecture, category (goods/construction/services), and announcement date
- Tracks which tenders you've already seen across runs, so scheduled runs only charge for genuinely new items
- Strips likely personal contact details (phone numbers, emails, staff names) from the announcement text by default
キーワード・都道府県・カテゴリー(物品/工事/役務)・公告日で絞り込み、前回実行以降に初めて見つかった案件だけを新着として返します(onlyNew を false にすると全件返します)。既定では公告文に含まれがちな担当者の電話番号・メール・氏名をマスクします。
Why use it?
Commercial tender-tracking services in this space (nSearch, bJAMP, etc.) typically cost ¥8,000–¥20,000/month per prefecture. This Actor lets you build the same alerting into your own workflow — combined with a scheduled run and Apify's webhook/Slack/Zapier/Make integrations, you get a free-data-source alternative you fully control, paying only per new record found.
nSearch・bJAMP等の有料入札情報サービスは月8,000〜20,000円/都道府県が相場です。本 Actor はスケジュール実行とApifyのWebhook/Slack/Zapier/Make連携を組み合わせることで、公開APIを使った低コストな代替手段になります。
How to use it
- Set
keywordsand/orprefecturesto narrow your search (leave both empty for nationwide, all-category results). - Set
publishedAfter(defaults to 7 days before the run) to control how far back to look. - Schedule the Actor to run daily or weekly. With
onlyNew: true(default), you'll only be charged for tenders you haven't seen in a previous run. - Optionally set
webhookUrlto receive a POST with new tenders as soon as a run finds them — or use Apify's built-in webhook/Slack/Zapier/Make integrations instead.
Input
| Field | Type | Default | Description |
|---|---|---|---|
keywords | string[] | [] | Full-text search terms (OR). Empty = no keyword filter. |
prefectures | string[] | [] | Japanese prefecture names (e.g. 東京都). Empty = nationwide (fetched per-prefecture and merged so large result sets aren't silently dropped). |
category | string | "" | 物品 (goods) / 工事 (construction) / 役務 (services). The underlying API only supports one category per run. |
publishedAfter | string (YYYY-MM-DD) | 7 days before run | Only tenders announced on/after this date. |
onlyNew | boolean | true | Only output/charge for tenders not seen in a previous run. |
includeContact | boolean | false | Keep the raw announcement text as-is. When false, phone numbers, emails, and staff names are redacted. |
maxItems | integer | 20 | Max records per run. If you search a single prefecture, note that a single request is capped at 200 records for memory safety — searching multiple prefectures (or nationwide) fetches per-prefecture and merges, so maxItems can go higher there. |
webhookUrl | string (URL) | — | If set, new tenders are POSTed here as JSON. |
Output
{"id": "kkj:c2VhcmNoL3BfcG9ydGFsLzIwMjYvMDkvMjAyNjA5MTFfNzkwMzAK","title": "令和8年度中小企業実態調査事業…","organization": "経済産業省","prefecture": "北海道","category": "役務","procedureType": "一般競争入札","announcedAt": "2026-09-11T00:00:00+09:00","openingAt": "2026-10-05T00:00:00+09:00","sourceUrl": "https://www.p-portal.go.jp/pps-web-biz/UAA01/OAA0101","isNew": true}
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel from the Output tab.
| Field | Description |
|---|---|
title | Tender project name (件名) |
organization | Issuing government body (発注機関) |
prefecture / city | Location of the issuing body |
category | 物品 (goods) / 工事 (construction) / 役務 (services) |
procedureType | e.g. 一般競争入札 (open competitive bidding) |
announcedAt | Announcement date (公告日) |
openingAt | Bid opening date (開札日), when available |
description | Full announcement text (contact details redacted unless includeContact: true). Very long announcements are capped at 50,000 characters. |
descriptionTruncated | true if the announcement text was cut off because it exceeded the 50,000-character cap. |
attachments | Linked documents (specs, drawings), when available |
sourceUrl | Original announcement URL. For some issuing systems this is a generic portal search entry page rather than a deep link to the specific announcement — kkj.go.jp does not guarantee deep-link stability. |
isNew | Whether this is the first time this Actor has seen the tender |
Run summary (key-value store OUTPUT)
Besides the dataset, each run writes a small JSON summary to its default key-value store under OUTPUT, including totalSearchHits, searchTruncated, and skippedLgCodes — a list of prefecture codes that had to be skipped this run (e.g. because a response exceeded the memory safety limit described above). Check this if a prefecture you expect to see data from is consistently missing.
Pricing
Pay-per-event: $0.05 per run (actor-start) + $0.003 per new tender record (tender-record, charged only for new items when onlyNew: true).
Example: running weekly (~4 times/month) and finding 50 new tenders per run costs 4 × $0.05 + 4 × 50 × $0.003 = $0.20 + $0.60 = $0.80/month.
The default maxItems (20) is intentionally small to keep a first trial run cheap — raise it once you know how many new tenders your filters typically return per run.
Tips
- Narrow by
prefecturesandkeywordsto reduce noise and cost on broad categories. - Set
maxItemsto a level yourmaxTotalChargeUsdrun budget can cover — if the budget is reached mid-run, the remaining new tenders are simply picked up on the next run (nothing is lost or double-charged). - If a run's
SearchHitstotal exceeds what was returned, the run log will say so and the Output'ssearchTruncatedflag will betrue— narrowpublishedAfteror raisemaxItemsif that happens often for your search. - A handful of records on kkj.go.jp are, as published, extremely large (observed up to hundreds of MB for a single record). To protect the run's memory, this Actor skips any prefecture whose response exceeds a safety size limit for that run (logged as a warning, and reflected in
searchTruncated) rather than crashing. This is rare and only affects the specific prefecture/date-range combination that triggers it. - Use Apify's Schedule feature with a weekly or daily interval for ongoing monitoring.
FAQ, disclaimers, and support
- This Actor only reads publicly published tender announcements (公告) via kkj.go.jp's official public API — no login, scraping, or circumvention of access controls is involved.
- Data accuracy and availability depend entirely on kkj.go.jp; this Actor does not guarantee completeness or timeliness.
- Source links (
sourceUrl) may point to pages requiring login (p-portal.go.jp) for full bid submission — this Actor itself never accesses login-gated content. - Found a bug or have a feature request? Open an issue on the Actor's Issues tab.