Japan Subsidy Monitor (jGrants): deadlines & change alerts avatar

Japan Subsidy Monitor (jGrants): deadlines & change alerts

Pricing

from $4.00 / 1,000 program rows

Go to Apify Store
Japan Subsidy Monitor (jGrants): deadlines & change alerts

Japan Subsidy Monitor (jGrants): deadlines & change alerts

For overseas firms, consultants and grant sites: Japanese subsidies (hojokin) from the official jGrants API, with deadline digest, change alerts and English labels.

Pricing

from $4.00 / 1,000 program rows

Rating

0.0

(0)

Developer

northgrain-lab

northgrain-lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 days ago

Last modified

Categories

Security

Limited permissions

Share

For anyone who has to keep track of Japanese government subsidies (補助金 / hojokin) without reading the jGrants portal by hand every week:

  • Overseas companies setting up or expanding in Japan. Example: "Which programs for a manufacturer in Aichi close in the next 60 days?" Area, industry, purpose and company-size labels come with English names.
  • Consultants and licensed advisors (士業: tax accountants, SME consultants, administrative scriveners). Example: "Every Monday, tell me what is new or changed for my clients in Osaka." Use one watch list per client and get a ready-to-paste digest.
  • Subsidy information sites, newsletters and internal tools. Example: "Feed new and changed programs into our site, with the source statement." One clean JSON row per program, with change detection.

The data comes from the official jGrants public API run by Japan's Digital Agency. Each program becomes one clean row: application windows in UTC and JST, days_left, maximum amount, areas, industries, purposes, every application round, and size + SHA-256 fingerprints of the attached guideline files (the API sends each file inside its response; the Actor hashes it and discards it). On top of that:

  • Deadline window and digest: keep only programs closing within N days, and get a short summary of the run, nearest deadline first, as JSON and as plain text.
  • Change alerts: changes_only mode returns only new, changed or no-longer-listed programs, with the changed fields and their previous values. Every row also has a one-line headline you can post to e-mail, Slack or a webhook as it is.
  • English labels: areas_en, industries_en, purposes_en and employee_limit_en sit next to the original Japanese fields.

This is an independent, unofficial tool. It is not affiliated with or endorsed by the Digital Agency or by any issuing body. The text of each program is the issuing body's text from jGrants, reformatted, with contact sections and e-mail / phone patterns removed (see below). The content is not guaranteed by the Government of Japan or by local governments.

Read this first

  • Attribution: every output row carries an attribution field. It says the source is jGrants ("出典:Jグランツ"), that the content was edited and processed by this Actor, that it was not created by the Digital Agency or any government body, and that its content is not guaranteed by the Government of Japan or by local governments. When you pass the data on or publish it, keep that text with the data (see "Source and attribution").
  • Price: USD 0.004 per result row (USD 0.20 for 50 rows). On a free plan the rows returned are capped: at most 10 rows in all mode, and in changes_only mode at most 10 new or changed rows plus at most 10 no_longer_listed rows (see "How it behaves"). Not yet confirmed on Apify.
  • Usage: enter search words and run. You get one row per counted program from the results of the official search, up to the maxItems cap (see "How it behaves"; by default the search is limited to programs inside an application period). The Actor waits at least 7 seconds between requests to the official API. In the test of 2026-10-12, 170 programs with details took about 21 minutes.
  • Terms: the table "jGrants Web-API terms of use and this Actor" lists the clauses of the jGrants Web-API terms of use and what the Actor does for each. When you run the Actor, your run uses the Web-API too. Read the original terms yourself.
  • Language: program titles and texts are in Japanese, as published. Search with Japanese keywords (for example 補助金 = subsidy, 助成金 = grant). Only 補助金 has been tried against the live API.

Input examples

1. Overseas company: manufacturing programs for Aichi, closing within 60 days

{
"keywords": ["補助金"],
"area": "愛知県",
"industry": "製造業",
"closingWithinDays": 60,
"sortBy": "deadline",
"maxItems": 50
}

2. Consultant: weekly watch of new and changed programs for clients in Osaka (schedule it weekly on Apify)

{
"keywords": ["補助金", "助成金"],
"area": "大阪府",
"employees": "50名以下",
"mode": "changes_only",
"stateKey": "osaka-clients",
"maxItems": 100
}

After each run, the key-value store record DIGEST_TEXT holds a plain-text list ("1. [NEW] … | closes … (12 days left) | up to JPY … | Osaka | link | 出典:Jグランツ(加工)") that you can paste into an e-mail, followed by the full source statement.

3. Subsidy information site: nationwide programs for equipment and IT investment, newest first, list fields only

{
"keywords": ["補助金"],
"area": "全国",
"purpose": "設備整備・IT導入をしたい",
"sortBy": "start_newest",
"includeDetail": false,
"maxItems": 200
}

The area, employees, industry and purpose values are passed to the official search as they are. Examples 1 and 2 were run once against the live API on 2026-10-18: every row returned matched the area (and, in example 1, the industry), and the 50名以下 size filter returned programs with no employee limit. purpose and example 3 have not been tried (see "What was and was not tested"). In the input form each value is shown with its English name, for example "愛知県 — Aichi"; the value sent is the Japanese one.

What you get

  • One row per program (a "subsidy" in jGrants), keyed by subsidy_id.
  • Application window as UTC and as JST (+09:00) timestamps, a computed status, and days_left.
  • Maximum amount, subsidy rate (as the issuer wrote it), target areas, employee-size class, purposes, industries, with English names for the areas, size class, purposes and industries.
  • Every application round with its own window and project end date.
  • Attachments listed by category with file name, size in bytes and SHA-256. A different SHA-256 means the file content differs.
  • A plain-text summary with the HTML removed, plus the links found in it.
  • A one-line headline per row for notifications.
  • In changes_only mode: change_type (new, changed, no_longer_listed), changed_fields, and previous_values.
  • Per run: a digest of the returned rows, nearest deadline first (DIGEST and DIGEST_TEXT in the key-value store), and a run summary (RUN_SUMMARY).

Input

FieldDefaultMeaning
keywords["補助金"]Search words sent to jGrants (2 to 255 characters; the Actor checks this before the run). The only keyword used in the tests described in this README (the 170-program test and the sample run) was "補助金"; results for English or other keywords have not been checked. Several keywords are merged and de-duplicated by program ID.
area, employees, industry, purposeemptyOptional filters, one value each. They are passed to the official jGrants search as they are; how the API narrows the results is up to the API (area, employees and industry were tried once on 2026-10-18, see "What was and was not tested"; purpose has not been tried). The form shows each value with its English name.
onlyAcceptingNowtrueOn: the official search is asked only for programs inside an application period. Off: the search is not limited that way. What the API returns when this is off was not tested.
closingWithinDaysempty (off)Keep only programs whose deadline in the official list is today or within this many days (0 to 365), counted in Japan calendar days like days_left. 0 = closing today. Programs without a deadline, or whose deadline has passed, are left out. The filter runs inside the Actor before details are fetched, so programs outside the window cost no detail request and no row.
sortBydeadlinedeadline, start_newest or amount_desc. Sorting is done inside the Actor.
maxItems10 (the input definition allows up to 5000)The cap for one run, on the programs counted and on the rows returned. A program is counted once its detail has been fetched; a program without a usable detail is skipped and not counted. Details are in "How it behaves".
includeDetailtrueOne extra request per program for summary, rate, rounds and attachments. Off = list fields only.
modeallall returns one row per counted program, so at most maxItems rows. changes_only returns only new, changed or no-longer-listed programs.
stateKeydefaultName of the memory used by changes_only. Use one name per watch list.
requestIntervalSeconds7Pause between requests to the official API, in whole seconds (7 to 60). Values outside that range (below 7 or above 60) are rejected before the run starts.

Output

Trimmed real row (here, some fields inside rounds, the second item of summary_links, the end of summary_text and the English part of attribution are cut; the dataset has them in full):

{
"subsidy_id": "a0W2x000007Cos5EAC",
"subsidy_number": "S-00003073",
"title": "[第六回以降]事業再構築補助金(共同申請者)",
"scheme_name": "事業再構築補助金",
"status": "open",
"days_left": 0,
"acceptance_start_utc": "2022-09-15T09:00:00Z",
"acceptance_end_utc": "2026-10-12T14:59:00Z",
"acceptance_end_jst": "2026-10-12T23:59:00+09:00",
"max_amount_jpy": 150000000,
"subsidy_rate_text": "公募要領をご確認ください。",
"areas": ["全国"],
"employee_limit": "従業員数の制約なし",
"purposes": ["新たな事業を行いたい", "販路拡大・海外展開をしたい", "設備整備・IT導入をしたい"],
"accepting_applications": true,
"rounds": [{ "round_id": "a0X2x000003guGwEAI", "acceptance_end_jst": "2026-10-12T23:59:00+09:00", "project_end_deadline_jst": "2026-10-12T23:59:00+09:00" }],
"attachments": [],
"summary_text": "第六回以降の共同申請者専用サイトです。\n\n■目的・概要\n本事業は、新型コロナウイルス感染症の影響が長期化し、 …",
"summary_links": [{ "text": "https://jigyou-saikouchiku.go.jp/documents.html", "url": "https://jigyou-saikouchiku.go.jp/documents.html" }],
"contact_sections_removed": 1,
"portal_url": "https://www.jgrants-portal.go.jp/subsidy/a0W2x000007Cos5EAC",
"source": "jGrants public API (Digital Agency, Japan)",
"attribution": "出典:Jグランツ(https://www.jgrants-portal.go.jp)。このコンテンツは、政府公式の補助金申請システム jGrants の Web-API 機能を利用して取得した情報をもとに、本 Actor が編集・加工して作成したものです。国・自治体・デジタル庁が作成したものではありません。コンテンツの内容は日本国政府及び自治体によって保証されたものではありません。 / Source: jGrants (https://www.jgrants-portal.go.jp). … (the same statements in English)",
"fetched_at": "2026-10-11T17:20:40Z"
}

Other fields: acceptance_start_jst, catch_phrase, industries, grant_type, request_reception_text, multiple_applications_allowed, contact_patterns_removed, has_detail, source_spec_url, and in changes_only mode change_type, changed_fields, previous_values (on a new row changed_fields is an empty array and previous_values an empty object; confirmed on the 10 rows of a first run against the live API). The no_longer_listed rows of changes_only mode carry the same attribution.

Fields added after version 0.2 come after all the fields above; no existing field was renamed or changed in meaning. For the same program, computed by the current code from the same recorded API response and the same fetched_at (not from a new live run; industries_en trimmed to 3 of 19):

{
"areas_en": ["Nationwide"],
"employee_limit_en": "No limit on number of employees",
"purposes_en": ["Start a new business", "Expand sales channels or go overseas", "Equipment and IT investment"],
"industries_en": ["Fisheries", "Construction", "Manufacturing"],
"headline": "[第六回以降]事業再構築補助金(共同申請者) | closes 2026-10-12 23:59 JST (last day) | up to JPY 150,000,000 | Nationwide | https://www.jgrants-portal.go.jp/subsidy/a0W2x000007Cos5EAC | 出典:Jグランツ(加工)"
}

Notes on the values, so you do not misread them:

  • scheme_name is the program scheme name. The official API calls this field institution_name, but it holds the name of the scheme, not the issuing organisation.
  • max_amount_jpy is 0 when the source says 0. The saved text of the official API documentation page does not say what 0 means, so treat it as "not stated", not "no money". The headline leaves the amount out when it is 0 or empty.
  • status comes from the application window dates. accepting_applications comes from the request_reception_presence field of the API: true when its value is "有" (yes), false for any other value, and empty when the field is absent. The two are worked out separately and can disagree. Read both.
  • grant_type can be empty (null): it is empty when the API sends no value for it, and always when includeDetail is off.
  • Text fields are in Japanese, as published. Area, industry and purpose values are the labels the API sends.
  • The *_en fields have the same length and order as the Japanese fields next to them. The English names are this Actor's own (industries follow the official English names of the Japan Standard Industrial Classification). A value the Actor does not know is copied in Japanese.
  • headline contains the title, the deadline and days_left ("last day" when days_left is 0), the amount, up to 3 areas (only "Nationwide" when the areas include 全国; the areas field still lists them all), portal_url and the short source "出典:Jグランツ(加工)". In changes_only mode it starts with [NEW], [CHANGED: <fields>] or [NO LONGER LISTED]. It depends on the time of the run, so it is not used for change detection.

Digest and alerts

Each run also writes to its default key-value store (these are records, not dataset rows, so they are not charged):

  • DIGEST: JSON with counts (programs, new, changed, no_longer_listed, closing_within_7_days), programs (the returned rows, nearest deadline first, whatever sortBy says; short fields only), removed (no_longer_listed rows), text, and attribution.
  • DIGEST_TEXT: the same text as plain text, one headline per line, ending with the full source statement. On a changes_only run with nothing to report it says "No changes since the previous run."

The digest covers only the rows this run returned (so the maxItems cap and the free-plan cap apply to it too). The dataset has a view "One-line alerts" with headline, change_type, days_left, the deadline, areas_en and the link.

Source and attribution

The data comes from jGrants, run by Japan's Digital Agency. This Actor is independent and is not created or endorsed by the Digital Agency or any government body.

The attribution field of every row (including no_longer_listed rows) holds the following statement in Japanese, followed by the same statements in English:

出典:Jグランツ(https://www.jgrants-portal.go.jp)。このコンテンツは、政府公式の補助金申請システム jGrants の Web-API 機能を利用して取得した情報をもとに、本 Actor が編集・加工して作成したものです。国・自治体・デジタル庁が作成したものではありません。コンテンツの内容は日本国政府及び自治体によって保証されたものではありません。

Source: jGrants (https://www.jgrants-portal.go.jp). This content was edited and processed by this Actor from information obtained through the Web-API of jGrants, the Japanese government's official subsidy application system. It was not created or endorsed by the Digital Agency or any government body. The content is not guaranteed by the Government of Japan or by local governments.

When you hand the output to other people, or show it on a site, in an app or in a report:

  • Keep this statement next to the data. If it is hard to attach to every row, place it once where readers can see it.
  • "This Actor" refers to the processing done by this Actor. If you edit or process the data further before showing it, add your own statement about that, separate from this one. Do not present the data as if the government or a local government had made it.
  • If you summarise the data, keep the point that the content is not guaranteed by the government or local governments.
  • The headline ends with the short source "出典:Jグランツ(加工)" only. When you post headlines on their own (for example in a chat channel), also put the full statement where readers can see it, for example once at the end of the message as DIGEST_TEXT does.

jGrants Web-API terms of use and this Actor

The jGrants Web-API terms of use (PDF, 4 pages) were retrieved and read on 2026-10-11. URL: https://fs2.jgrants-portal.go.jp/API利用規約.pdf . The "gist of the clause" column below is a summary, not the original text. The terms apply to a beta feature and may be amended without notice (Article 9). This table is not legal advice and says nothing about whether any particular use is allowed.

ArticleGist of the clauseWhat this Actor does (version 0.3)
5-1 (1)When you provide a service that uses the feature, state the source (example: "出典:J グランツ").Every row's attribution starts with "出典:Jグランツ" and the portal URL.
5-1 (2)When you edit or process the content, say so separately from the source. Do not publish or use it as if the state (a ministry etc.) had made it. The sample wording ends with "コンテンツの内容は日本国政府及び自治体によって保証されたものではありません" (the content is not guaranteed by the Government of Japan or by local governments).The same field says the content was edited and processed, that it was not created by the Digital Agency or any government body, and carries the not-guaranteed sentence. It does not name an operator; it says "本 Actor" (this Actor).
5-2Some content may carry third-party rights. For content that states third-party rights (example: a rights notice in application guidelines), unless it is stated to be cleared, the user must obtain permission from that third party.The bodies of attached files (guidelines, forms) are not stored, returned or redistributed. Only category, file name, size in bytes and SHA-256 are returned. The summary text is the issuer's published text, reformatted. If it carries a rights notice, check it yourself before reusing it.
5-5 (2)No access in a short time in large volume, and nothing else that hinders the operation of the feature (the terms give no number of requests or interval).All requests go through one queue, one at a time, with at least 7 seconds plus a 0.05-second margin between sends. The floor is 7 seconds and cannot be lowered by input. After three 403 or 429 answers in a row the run stops. The interval is kept inside one run. If you start several runs at once, the total request rate rises accordingly.
7The feature is a beta and may be stopped, paused or interrupted without notice; use may be restricted when it is concentrated.A 403 or 429 answer is followed by a wait and a retry, and three such answers in a row stop the run with an error. A 5xx answer or a network error is retried too, and the run ends with an error if the third attempt fails. A single request is tried at most 3 times.
9The terms may be amended without notice; using the feature after an amendment is published counts as agreeing to it.The version read is the one retrieved on 2026-10-11. Later amendments are not reflected in this table.

The terms also contain a representation that the user is not an anti-social force (Article 5-3), a provision that disputes with third parties arising from a service built on the content are the user's own responsibility (5-4), a disclaimer by the operator of the feature (8), and a rule that inquiries are made in Japanese (11).

The additions after version 0.2 (deadline window, digest, headline, English labels) send no extra requests and do not change any row of this table: the digest and both new text outputs carry the source statement, and the headline carries the short source.

Personal data

Summaries published by issuers can include a contact section, which may name staff members. This Actor treats a line of up to 40 characters that begins with one of ■ ◆ ● ▼ ◇ □ 【 < as a heading, and a heading that contains an inquiry or contact word (問合せ, 問い合わせ and similar spellings, 連絡先, 相談窓口) as the start of a contact section. From that heading it removes the text up to the line before the next line that begins with ■. Other headings in between (for example 【 or < headings) are removed with it. If no later line begins with ■, the removal runs to the end of the text, so text that is not a contact section can be removed too. Outside such sections it removes e-mail address shapes (including the forms written with [at] or (at)) and hyphenated phone-number shapes that start with 0 (full-width 0 too). A removed section is replaced by the marker [contact section removed], and the counts are kept in contact_sections_removed and contact_patterns_removed. It does not return the original HTML.

This is rule-based and works by shape. It cannot tell a personal name from other text. A personal name written outside a contact section, the postal address of an organisation, and e-mail addresses or phone numbers written in a shape the rules do not cover (for example a phone number without hyphens) can remain. Do not assume the text is free of personal data. In the 170-program test of 2026-10-12, a contact section was removed from 165 of the 170 rows; 5 rows had no section removed (see "What was and was not tested" for how the files relate to that test). For contact details use portal_url and the issuer's own pages. The headline and the digest do not contain the summary text.

How it behaves

  • Of the jGrants public API, only the list endpoint and the program detail endpoint (v2) are called. No login, no browser, no scraping of web pages.
  • One request at a time. By default the Actor waits at least 7 seconds between requests; 7 is also the lowest value you can set. The test of 2026-10-12 with details for 170 programs took 172 requests (1 list, 170 details, 1 retry after a 429) and 20.8 minutes from the first recorded request to the last. The API sends attachments inside the detail response (in the same test the mean was 1.2 MB and the largest 16.6 MB; about 210 MB received in one run; 1 MB = 1,048,576 bytes). Memory is configured for at least 512 MB, but the actual memory use on Apify has not been measured (not confirmed). If the API answers 403 or 429 three times in a row, the run stops. A single answer is followed by a wait and a retry (in the test there was one 429, and the retry after waiting succeeded).
  • About how the interval was measured: the run time above and the smallest gap between requests (7,050 ms over all 343 requests; none shorter; the 22-request run that produced the output samples also had a smallest gap of 7,050 ms) were calculated from times recorded by the local pass-through just before it sent each request to the official API. They may differ from the time a request actually left onto the network (the size of the difference was not measured).
  • By default the Actor sends its requests to the official API host (api.jgrants-portal.go.jp); the environment variable JGRANTS_API_BASE (read in src/api.js) can replace that address. The 170-program test sent 343 requests to the official API, counting the second fetch used for the comparison, and the run that produced the output samples sent 22; all of them went to that host. The saved copy of that host's robots.txt is a 404 error page with no rules. The robots.txt of the portal (www.jgrants-portal.go.jp) disallows everything except /index.html; this Actor does not fetch portal pages (portal_url is only written into the output).
  • There is no code that goes to fetch attachment bodies. The API sends them inside the detail response; the Actor turns them into a byte count and a SHA-256 in memory and discards them. They are not stored or returned.
  • The maxItems cap: a program is counted once its detail has been fetched (with includeDetail off, once it is taken from the list sorted by sortBy). When the count reaches maxItems, the Actor takes no further programs. If a detail request ends without a usable detail (for example a 404, or an answer with an empty result), that program is skipped, is not counted and gets no row, so the number of detail requests can be larger than maxItems. In changes_only mode, programs without a change are counted but not returned. Rows returned: in all mode at most maxItems; in changes_only mode at most maxItems new or changed rows, plus at most maxItems no_longer_listed rows (counted separately).
  • closingWithinDays is applied to the sorted list before the maxItems cap, so the cap counts only programs inside the window. The run summary shows the window (closing_within_days) and how many listed programs were outside it (outside_closing_window). In changes_only mode, "no longer listed" is still decided against the whole official list: a program that is still listed but has moved out of the window is not reported as removed, and a program that enters the window for the first time under a stateKey is reported as new. Changing closingWithinDays does not reset the memory.
  • On a free plan (the Actor treats a run as free when the environment variable APIFY_USER_IS_PAYING is not 1), a maxItems above 10 is replaced by 10. So in all mode at most 10 rows are returned; in changes_only mode at most 10 new or changed rows, plus at most 10 no_longer_listed rows, up to 20 rows in all. Whether this check works as intended on Apify has not been confirmed.
  • If the official list comes back empty, changes_only does not report every program as "no longer listed" and keeps its previous memory.
  • With changes_only, the first run reports the counted programs (at most maxItems) as new. Changing the keywords or filters resets the memory for that stateKey.

Pricing

Pay per result: USD 0.004 per row returned (see the price on this page). The Actor is built to charge per row pushed to the dataset, not per request. In changes_only mode unchanged programs are not returned and, by design, not charged. The digest records (DIGEST, DIGEST_TEXT) and the run summary are not dataset rows and add no charge. The billing behaviour has not yet been confirmed on Apify.

What was and was not tested

Tested against the live API: on 2026-10-12 (JST), the list for the keyword "補助金" with the "accepting now" filter and the detail of all 170 programs on it, fetched once at a 7-second interval (mode all, with details). The output was compared on 28 fields with a second fetch of the same programs from the same API, and 170 of 170 programs matched. For 64 of the 170, the detail response had not been used in an earlier test or replay (they were not among the 100 programs of the previous run, the 6 programs set aside, or the 1 program used as a test detail). Those 64 programs had appeared in a list recorded earlier, so they are "detail response unused", not "program seen for the first time" (programs seen for the first time: 0). 64 of the 64 matched. The comparison code was written by the same person who wrote the Actor, so it is not a third-party check. The second fetch ran between 20.2 and 20.9 minutes after the first fetch of each program (minimum and maximum over the 170 programs). A program can change between the two fetches; the design counts that as a separate kind of mismatch, and there were 0.

To take the output samples, the Actor was run twice in small runs against the live API between 02:20 and 02:23 on 2026-10-12 (JST): 22 requests in total, all answered 200, none 429 or 403. The first run used mode all: it returned 10 rows, and the run summary shows free_trial_cap_applied as true (11 requests). The second was a first changes_only run: it returned 10 rows, and every change_type was new (11 requests). Both used details and a 7-second interval, and both went through the same local pass-through.

The 170-program test and the sample run both went through a local pass-through that put the requests to the official API into one queue and recorded their times and counts. The records of both runs contain requests of two kinds only, list and detail, all to the official API host (343 records for the 170-program test, 22 for the sample run). Both used a test setting that replaces the API address (JGRANTS_API_BASE, read in src/api.js).

Among the files in src/, only src/transform.js differs between a file list with SHA-256 values taken just before the 170-program test started and the files published here. The 170-program test has not been repeated.

The additions after version 0.2 (closingWithinDays, DIGEST / DIGEST_TEXT, headline, the *_en fields; files src/run.js, src/transform.js, src/main.js, and the new src/digest.js and src/labels.js) were tested with recorded API responses and a local stand-in for the API (automated tests in test/, and one local run of the Actor against the stand-in), and then in three small runs against the live API on 2026-10-18 between 10:01 and 10:03 (JST), outside Apify. Those runs sent 17 requests, all to the official API host and all answered 200 (none 403 or 429); the smallest gap between sends was 7.05 seconds and about 38.5 MB were received.

  • Example 1 (area 愛知県, industry 製造業, closingWithinDays 60): the list returned 10 programs, 8 of them were outside the 60-day window and got no detail request, and 2 rows were returned (3 requests). Both rows list 愛知県 among their areas and 製造業 among their industries. DIGEST and DIGEST_TEXT were written.
  • Example 2 (area 大阪府, employees 50名以下, mode changes_only, maxItems 5), run twice in a row with the same stateKey: the first run returned 5 new rows (補助金 listed 8 programs, 助成金 0). All 5 list 大阪府 among their areas, and all 5 have the employee class 従業員数の制約なし (no limit). The second run returned 0 rows and counted 5 programs as unchanged, and its DIGEST_TEXT said "No changes since the previous run." (7 requests each).
  • After these runs the headline was changed so that a program listing 全国 shows only "Nationwide"; that change was checked against the saved rows, not by another live run.

None of this has been run on Apify. The tests also check that the 0.2 fields keep their names and order and that the change-detection fingerprint is unchanged, so an existing changes_only memory keeps working.

Not tested against the live API: the purpose filter, other values of the area, employees and industry filters than the ones above (and the programs of the list that got no detail request), onlyAcceptingNow off, request intervals other than 7 seconds, and the detection of changed and no_longer_listed in changes_only (a second run with no change was tried once, see above). That change detection was exercised with a local stand-in for the API, not with the live one. Whether Apify sets the environment variable APIFY_USER_IS_PAYING as this Actor expects has not been confirmed. The Actor has not been run on Apify yet (build, memory and billing are untested).

Limits

  • Coverage is whatever jGrants lists. It is not a complete list of Japanese subsidies.
  • Text and numbers are the issuers' own and can be wrong or out of date. Always confirm in the official guideline (公募要領) before applying. This is not legal, tax or application advice.
  • The English names in the *_en fields and in the input form are this Actor's labels for the Japanese values, not official translations by jGrants (the industry names follow the official English names of the Japan Standard Industrial Classification). Titles and texts are not translated.
  • The saved text of the official API documentation page does not publish a rate limit or reuse terms. The rules on access (Article 5-5) and on stating the source and processing (Article 5-1) are in the separate API terms of use, which were retrieved and read on 2026-10-11 (see the table above). The terms give no number of requests or interval. This Actor does not go below its default interval, and you should not start several runs at the same time. The terms may be amended without notice, so read both the jGrants portal's terms of use and the API terms yourself.
  • The jGrants API is a beta and can be stopped or restricted without notice (Article 7). What the Actor does then is in the Article 7 row of the table above.

日本語

誰が・どんな場面で使うか

日本の補助金を、毎週 jGrants のサイトを見に行かずに追いたい人のための Actor です。

  • 日本に進出する・日本で事業を広げる海外の会社: 「愛知県の製造業向けで、60 日以内に締め切られるものは?」。地域・業種・目的・従業員数の値に英語の名前を付けて出します。
  • コンサルタント・士業(税理士・中小企業診断士・行政書士など): 「大阪の顧客向けに、新しく出たもの・変わったものを毎週月曜に知りたい」。顧客ごとに見張りの名前(stateKey)を分け、そのまま貼れる要約を受け取れます。
  • 補助金の情報サイト・メールマガジン・社内の道具: 「新しい・変わった補助金を、出典の記載付きで自分のサイトに流したい」。1 件 1 行の JSON と、変更の検知。

情報はデジタル庁が運営する jGrants の公開 API から取ります。認証なし・ブラウザ操作なし・Web ページの読み取りなし。本 Actor は非公式のもので、デジタル庁や各実施機関とは関係がなく、内容は日本国政府及び自治体によって保証されたものではありません。

入力の例

  1. 海外の会社: 愛知県・製造業・60 日以内に締切 {"keywords": ["補助金"], "area": "愛知県", "industry": "製造業", "closingWithinDays": 60, "sortBy": "deadline", "maxItems": 50}
  2. 士業・コンサル: 大阪府・従業員 50 名以下の、新規・変更だけを毎週(Apify の予定実行で週 1 回) {"keywords": ["補助金", "助成金"], "area": "大阪府", "employees": "50名以下", "mode": "changes_only", "stateKey": "osaka-clients", "maxItems": 100}
  3. 情報サイト: 全国・設備整備・IT導入、新しい順、一覧の欄だけ {"keywords": ["補助金"], "area": "全国", "purpose": "設備整備・IT導入をしたい", "sortBy": "start_newest", "includeDetail": false, "maxItems": 200}

地域・従業員数・業種・目的の値は、そのまま jGrants の検索に渡します。2026-10-18 に例 ① と ② を本物の API で 1 回ずつ走らせ、返った行は全部、指定した地域(① は業種も)を含んでいました。「50名以下」では、従業員数の制約が無い番組が返りました。目的と例 ③ はまだ試していません。入力の画面では「愛知県 — Aichi」のように英語の名前を添えて見せ、送る値は日本語のままです。キーワードは日本語で入れてください(本物の API で試したのは「補助金」だけです)。

0.2 の後に足した機能

  • 締切で絞る・締切が近い順の要約: closingWithinDays で「今日から N 日以内に締切」のものだけにします(日本時間の暦日で数える。締切の無いもの・過ぎたものは除く)。範囲の外の番組は詳細を取りに行かないので、要求も行(課金)も増えません。実行ごとに、出した行を締切が近い順に並べた要約を、キー値ストアの DIGEST(JSON)と DIGEST_TEXT(文字。メールにそのまま貼れる)に書きます。要約は dataset の行ではないので課金されません。
  • 通知向けの 1 行(headline): 各行に「題名 | 締切と残り日数 | 上限額 | 地域 | リンク | 出典:Jグランツ(加工)」の 1 行を足しました。changes_only では先頭に [NEW] [CHANGED: 変わった欄] [NO LONGER LISTED] が付きます。dataset に「One-line alerts」の表示を足しました。
  • 英語の欄: areas_en・industries_en・purposes_en・employee_limit_en。元の日本語の欄はそのまま残し、同じ並びで英語を足します。業種は日本標準産業分類の公式の英語名に合わせ、知らない値は日本語のまま写します。題名・本文は訳しません。

既存の出力の欄は、名前・意味・並びとも 0.2 のままです(新しい欄は後ろに足しただけ)。変更の検知に使う指紋も変えていないので、0.2 で作った changes_only の記憶はそのまま使えます。

出典・規約・価格・個人情報(要点。詳しくは上の英語の節)

  • 出典: 各行の attribution に「出典:Jグランツ」・本 Actor が編集・加工したこと・国や自治体が作成したものではないこと・内容は日本国政府及び自治体によって保証されたものではないことを、日本語と英語で入れています(jGrants Web-API 利用規約 第5条1)。データを人に渡す・公開するときは、この文をデータと一緒に見えるところに置いてください。headline には短い「出典:Jグランツ(加工)」しか入らないので、1 行だけを流すときは全文も見えるところに置いてください(DIGEST_TEXT は末尾に全文を付けています)。
  • 規約: jGrants Web-API 利用規約(2026-10-11 取得)の各条と本 Actor の対応は、英語の節の表のとおりです。要求は 1 本の列で、間隔は 7 秒以上(入力で下げられない)。403/429 が 3 回続けば止まります。今回足した機能は要求を増やしません。
  • 価格: 結果の行 1 件につき USD 0.004(50 行で USD 0.20)。無料プランでは、all で最大 10 行、changes_only で新規・変更 最大 10 行+「一覧から消えた」最大 10 行。DIGEST・DIGEST_TEXT・RUN_SUMMARY は行ではないので課金されません。Apify の上での課金の動きは、まだ確かめていません。
  • 個人情報: 本文から問合せ先の節と、メール・ハイフン区切りの電話番号の形を消しますが、形で判断する仕組みなので、個人名などが残ることがあります。headline と要約には本文を入れていません。
  • 試した範囲: 0.2 は 2026-10-12 に本物の API で 170 件を試しました。0.2 の後に足した機能は、記録した応答と手元の偽の API で試したうえで、2026-10-18 に本物の API で小さく 3 回走らせました(Apify の外。要求 17 回、全部 200、間隔の最小 7.05 秒)。① 愛知県・製造業・60 日以内で 2 行と要約、② 大阪府・50 名以下の changes_only を 2 回続けて、1 回目は新規 5 行、2 回目は変化なし 0 行。changes_only の「変わった」「一覧から消えた」の検知は、本物の API ではまだ試していません。Apify の上ではまだ動かしていません。