IRA Energy Community Bonus Screener — 10% ITC/PTC Adder
Pricing
from $5.50 / 1,000 results
IRA Energy Community Bonus Screener — 10% ITC/PTC Adder
Screens project coordinates for the IRA energy-community bonus (10% ITC / +10% PTC) against the operative IRS Notice 2026-39 coal-closure and statistical-area lists plus the DOE/NETL layers. Returns the notice, effective date, Vintage 1/2 eligibility and the prior-list answer.
Pricing
from $5.50 / 1,000 results
Rating
0.0
(0)
Developer
Kyle Maloney
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
IRA Energy Community Bonus Screener - 10% ITC/PTC Adder
Screen project-site coordinates for the Inflation Reduction Act energy-community bonus - a 10 percentage-point increase to the section 48 / 48E investment tax credit (2 percentage points where the prevailing wage and apprenticeship requirements are not met) or a 10% increase to the section 45 / 45Y production tax credit.
Send a list of {lat, lon, label} sites. Get back one row per site with a
qualify / does-not-qualify answer for both location-based categories, the exact
IRS notice and effective date the answer came from, Vintage 1 / Vintage 2
eligibility, and the prior-vintage answer for beginning-of-construction analysis.
This is an informational screening tool. It is not tax advice and not an official IRS determination.
Why the vintage matters (read this before comparing to another tool)
The IRS re-publishes the energy-community lists every June. The current operative lists come from IRS Notice 2026-39, released 2026-06-10, and they supersede Notices 2023-29, 2023-47, 2024-30, 2024-48 and 2025-31.
The DOE/NETL ArcGIS layers behind the public Energy Community Tax Credit Bonus mapping tool have not been refreshed to that vintage. Measured live on 2026-08-01:
| Source | Rows | Vintage |
|---|---|---|
NETL 2024_MSAs_NonMSAs_that_are_Energy_Communities | 901 counties | Notice 2024-48 |
NETL MSA_NonMSA_Energy_Communities24 | 877 counties | Notice 2025-31 |
| IRS Notice 2026-39 Appendix 1 | 867 counties | operative |
NETL 2024_Coal_Closure_Energy_Communities | 4,325 tracts | Notice 2024-48 |
NETL CoalClosureCensusTracts24 | 4,423 tracts | Notice 2025-31 |
| + IRS Notice 2026-39 Appendix 2 | +54 tracts | operative |
Screening the 2024 statistical-area layer against the operative list produces 174 of 901 counties that are no longer listed (Anchorage AK, Fairbanks North Star AK, Fairfield County CT, 20+ Illinois counties) and 140 of 867 operative counties that are missing (Weld County CO, Napa County CA, San Luis Obispo County CA, New Castle County DE, Calcasieu Parish LA).
So this actor takes the Statistical Area answer from the IRS list itself, keyed on the site's county FIPS, and the Coal Closure answer from the newest NETL polygon layer union Notice 2026-39 Appendix 2. It also reports what the prior-vintage layers said, because a project that began construction while a location was listed may retain eligibility.
Every run asserts, live and before anything is billed, that each layer still resolves, that its row count is in a measured band, that the coal list has not regressed to a smaller vintage, that a known coal-closure tract still returns a hit, that a known-clear coordinate still returns nothing, and that the geocoder and the embedded list agree end to end. If any of that fails the run fails loudly and bills nothing rather than publishing a determination it cannot stand behind.
Who this is for
- Solar / wind / storage / hydrogen developers sizing a project's tax-credit stack before site control.
- Tax equity investors and lenders diligencing an energy-community claim, including whether a site's status changed between notices.
- Renewable energy tax counsel and CPAs screening a portfolio of sites in one pass and needing the vintage and Vintage 1 / Vintage 2 split on the record.
- Site selection and land teams ranking candidate parcels by credit uplift.
- AI agents wiring a coordinate to a tax-credit answer over MCP.
What it screens (and what it does not)
There are three location-based energy-community categories. This actor screens the two that can be resolved from a coordinate:
- Coal Closure - census tracts where a coal mine closed after 1999 or a coal-fired generating unit retired after 2009, plus directly adjoining tracts.
- Statistical Area (Fossil Fuel Employment) - MSAs / non-MSAs with at least 0.17% direct fossil fuel employment (or 25%+ related local tax revenue) and an unemployment rate at or above the national average for the prior year.
It does not screen the Brownfield Site category, which is not a national
polygon layer. A "does not qualify" result here does not rule out a
brownfield-based qualification - brownfield_category_screened is false on
every row to say so explicitly.
Example input
{"assets": [{ "lat": 37.8, "lon": -81.5, "label": "Raleigh County, WV" },{ "lat": 40.4233, "lon": -104.7091, "label": "Greeley, Weld County CO" },{ "lat": 44.29, "lon": -105.5, "label": "Gillette, WY" },{ "lat": 40.7484, "lon": -73.9857, "label": "Manhattan, NY (control)" }],"maxAssets": 500}
| Input | Type | Notes |
|---|---|---|
assets | array (required) | { "lat": number, "lon": number, "label": string }. One billable row per asset. Omitting it fails the run before anything is billed. |
maxAssets | integer | Safety cap, default 500, max 5000. |
How a null is different from a false
false means the category was checked and the answer was negative. null means
a source did not answer, so nothing is being asserted. Every source records
its own outcome on every row (netl_coal_current_status, netl_coal_prior_status,
netl_msa_prior_status, geocoder_status, plus sources_failed and
partial_result), and the overall verdict can never read "does not qualify"
while a contributing source is unavailable. If no asset produced a determination,
the run fails and nothing is billed.
Output fields
One row per screened asset. Every field below is emitted on every row.
| Field | Type | Description |
|---|---|---|
asset_label | string | Caller-supplied label for the screened site (auto-generated if omitted). |
asset_lat | number | Screened point latitude (WGS84). |
asset_lon | number | Screened point longitude (WGS84). |
qualifies_for_ira_energy_community_bonus | boolean | True when the site is in a coal-closure census tract OR a county on the operative IRS Notice statistical-area list (either category qualifies). False only when BOTH categories were checked and both were negative. Null when a contributing source did not answer or the coordinate was invalid - never a confident negative. |
bonus_adder | string | The IRA energy-community credit bonus when qualifying. For the section 48 / 48E investment credit this is 10 percentage points where the prevailing wage and apprenticeship requirements are met and 2 percentage points where they are not; for the section 45 / 45Y production credit it is a 10 percent increase. Null when the site does not qualify or no determination was reached. |
in_coal_closure_community | boolean | True when the point falls in a coal-closure census tract - a tract with a coal mine closed after 1999 or a coal-fired generating unit retired after 2009, or a directly adjoining tract. Checked against the DOE/NETL coal-closure polygon layer UNION the current IRS notice list of newly identified tracts. Null when neither source answered. |
coal_closure_tract_geoid | string | 2020 census-tract GEOID of the coal-closure tract containing the point. |
closure_type | string | Why the tract qualifies: Coal mine closure, Coal-fired electric generating unit retirement, both, or Adjacent to a census tract with a coal closure. |
coal_closure_county | string | County of the coal-closure tract containing the point. |
coal_closure_state | string | State of the coal-closure tract containing the point. |
in_energy_community_msa | boolean | True when the site county is listed in the operative IRS notice as an MSA or non-MSA that meets both the 0.17 percent Fossil Fuel Employment threshold and the unemployment-rate requirement. Determined from the IRS list by county FIPS, not from the DOE/NETL polygon layer, which lags the notice by up to two annual updates. Null when the county could not be resolved. |
msa_name | string | Name of the qualifying Statistical Area, as published by the DOE/NETL MSA polygon layer. Null when that layer does not cover the county - the IRS statistical-area list is county-level and publishes no area name, so a county can qualify with no name available here. Use county_name and state_name in that case. |
msa_type | string | Whether the DOE/NETL polygon covering the point is an MSA or a Non_MSA. Null when that layer does not cover the county. |
msa_county | string | County of the qualifying Statistical Area containing the point. |
msa_state | string | State of the qualifying Statistical Area containing the point. |
determination_basis | string | Plain-language explanation of the qualification, of a verified negative, or of exactly which categories could NOT be checked when no determination was reached. |
determination_categories | array | Which energy-community categories the site qualifies under (Coal Closure Census Tract and/or Fossil Fuel Employment MSA/non-MSA). Null when the site does not qualify or no determination was reached. |
source_citation | string | The lists, layers and effective dates behind this row. |
disclaimer | string | Informational-use disclaimer; not tax advice, and the Brownfield category is not screened. |
error | string | Error message for an invalid coordinate; null otherwise. Per-source failures are reported in the *_status and sources_failed columns, not here. |
checked_at | string | UTC timestamp of the screening run. |
energy_community_list_notice | string | The IRS notice whose lists produced the determination on this row. Currently IRS Notice 2026-39, released 2026-06-10. |
energy_community_list_effective_date | string | Date the operative energy-community lists took effect (ISO date). |
energy_community_list_next_update_expected | string | Calendar year in which the IRS is expected to publish the next annual update to these lists. |
screening_lists_presumed_current | boolean | False once the run date is past the point at which the next annual IRS notice should have superseded the embedded lists. When false, re-verify against the newest notice. |
statistical_area_source | string | Exactly which list and key produced the Statistical Area answer. Null when the county could not be resolved. |
coal_closure_source | string | Exactly which sources produced the Coal Closure answer. Null when no coal source answered. |
census_tract_geoid_2020 | string | The site 11-digit 2020 census tract, resolved independently of the energy-community layers. Null when the geocoder did not answer. |
county_fips | string | The site 5-digit county FIPS - the key used against the Statistical Area list. |
county_name | string | County or county-equivalent name containing the site. |
state_name | string | State containing the site. |
geocoder_source | string | Which geocoder resolved the tract and county: fcc (FCC Census Block API) or tigerweb (Census TIGERweb fallback). Null when neither answered. |
statistical_area_listed_in_notice | boolean | True when the county is on the operative IRS Notice Appendix 1 statistical-area list. Null when the county could not be resolved - never false in that case. |
statistical_area_vintage1_eligible | boolean | Eligible under the Vintage 1 (2010 decennial census) MSA/non-MSA grouping. A project qualifies only if it meets the criteria under the same vintage. |
statistical_area_vintage2_eligible | boolean | Eligible under the Vintage 2 (2020 decennial census) MSA/non-MSA grouping. |
statistical_area_vintage_note | string | Plain-language explanation of the vintage eligibility, including the warning when a county is eligible under only one vintage. |
coal_closure_basis | string | Which source established the coal-closure hit: netl_polygon_layer, irs_notice_appendix_2, or both. Null when the site is not in a coal-closure tract or nothing answered. |
coal_closure_tract_type_raw | string | The tract_type value exactly as published by the DOE/NETL coal-closure layer, before normalization. |
coal_closure_type_recognized | boolean | False when the layer published a tract_type outside the known vocabulary. The determination is unaffected - membership in the layer is what qualifies a tract - but closure_type is then reported verbatim. |
coal_closure_newly_listed_2026 | boolean | True when the tract appears in the current IRS notice list of newly identified coal-closure tracts rather than in the DOE/NETL polygon layer. |
coal_closure_retroactive_to_2023 | boolean | True when the tract was newly identified from corrected location data, making projects placed in service after 2022-12-31 eligible to claim the bonus. |
prior_list_notice | string | The prior-vintage IRS notice reflected by the DOE/NETL 2024 mapping-tool layers. |
prior_list_effective_date | string | Publication date of the prior-vintage DOE/NETL layers (ISO date). |
qualifies_under_prior_list | boolean | Whether the site qualified under the prior-vintage lists. Relevant to the beginning-of-construction rules, under which a project started while a location was listed may retain eligibility. Null when a prior-vintage layer did not answer. |
in_coal_closure_community_prior_list | boolean | Coal Closure answer from the prior-vintage DOE/NETL 2024 layer. Null when that layer did not answer. |
in_energy_community_msa_prior_list | boolean | Statistical Area answer from the prior-vintage DOE/NETL 2024 layer. Null when that layer did not answer. |
prior_list_coal_tract_geoid | string | Census tract GEOID reported by the prior-vintage coal-closure layer. |
prior_list_msa_name | string | Statistical Area name reported by the prior-vintage MSA layer. |
changed_since_prior_list | boolean | True when the operative answer differs from the prior-vintage answer. Null when either answer is unavailable. |
change_description | string | Plain-language description of any change in eligibility between the prior-vintage lists and the operative notice, including the beginning-of-construction caveat. |
itc_bonus_percentage_points_with_pwa | integer | Percentage points added to the section 48 / 48E investment credit when the prevailing wage and apprenticeship requirements are met or the project is exempt. Null when the site does not qualify. |
itc_bonus_percentage_points_without_pwa | integer | Percentage points added to the section 48 / 48E investment credit when the prevailing wage and apprenticeship requirements are NOT met. Null when the site does not qualify. |
ptc_increase_percent | integer | Percent increase to the section 45 / 45Y production credit rate for a qualifying site. Null when the site does not qualify. |
brownfield_category_screened | boolean | Always false. The Brownfield Site energy-community category is not a national polygon layer and is not screened here, so a negative result does not rule out a brownfield-based qualification. |
netl_coal_current_status | string | Outcome of the current DOE/NETL coal-closure layer query: ok, unavailable, or not_applicable. |
netl_coal_current_error | string | Error message when the current coal-closure layer did not answer; null on success. |
netl_coal_prior_status | string | Outcome of the prior-vintage DOE/NETL coal-closure layer query: ok, unavailable, or not_applicable. |
netl_coal_prior_error | string | Error message when the prior-vintage coal-closure layer did not answer; null on success. |
netl_msa_prior_status | string | Outcome of the prior-vintage DOE/NETL MSA layer query: ok, unavailable, or not_applicable. |
netl_msa_prior_error | string | Error message when the prior-vintage MSA layer did not answer; null on success. |
geocoder_status | string | Outcome of the census tract and county lookup: ok, unavailable, or not_applicable. |
geocoder_error | string | Error message when neither the FCC Census Block API nor Census TIGERweb resolved the point; null on success. |
sources_failed | array | Names of the sources that did not answer for this asset. Null when every source answered. Any determination backed by a failed source is reported as null, never as a negative. |
partial_result | boolean | True when at least one source did not answer for this asset, so the row is not a complete screen. |
Columns that are null on a healthy run
error, sources_failed, netl_coal_current_error, netl_coal_prior_error,
netl_msa_prior_error and geocoder_error are null on a run where everything
worked - that is the good news, not a dead column. error is populated by an
invalid coordinate (for example {"lat": 999, "lon": -81.5}); the rest are
populated when the named upstream does not answer. All six are pinned by offline
fixtures so they cannot rot.
Sources
| Source | What it provides | Keyless |
|---|---|---|
| IRS Notice 2026-39 Appendix 1 (867 counties) | Operative Statistical Area list, with Vintage 1 / Vintage 2 flags | embedded, transcribed verbatim |
| IRS Notice 2026-39 Appendices 2 and 3 (54 tracts, 15 retroactive) | Coal-closure tracts published after the DOE/NETL layers were last refreshed | embedded, transcribed verbatim |
DOE/NETL CoalClosureCensusTracts24 FeatureServer/57 | 4,423 coal-closure tract polygons, cumulative through Notice 2025-31 | yes |
DOE/NETL 2024_Coal_Closure_Energy_Communities FeatureServer/0 | 4,325 prior-vintage coal tract polygons | yes |
DOE/NETL 2024_MSAs_NonMSAs_that_are_Energy_Communities FeatureServer/0 | 901 prior-vintage statistical-area counties, and the only published MSA names | yes |
| FCC Census Block API | 2020 census tract + county for the site | yes |
| Census TIGERweb 2020 tracts | Geocoder fallback | yes |
Use as an MCP tool
Available to AI agents through mcp.apify.com. The input is a plain list of
coordinates and every output field carries a description, so an agent can chain
this straight into a site-scoring or proposal workflow. Good pairings: ask for
the bonus screen, then read statistical_area_vintage1_eligible /
statistical_area_vintage2_eligible before asserting eligibility, and check
partial_result before treating a negative as final.
Pricing
Pay per result: $8 per 1,000 rows (one row per screened site), with graduated discounts on paid Apify plans. A failed run emits no rows and bills no result events.
FAQ
Which IRS notice does an answer come from? Every row carries
energy_community_list_notice and energy_community_list_effective_date. Today
that is IRS Notice 2026-39, effective 2026-06-10.
My county was eligible last year and now is not. That is the annual
unemployment-rate refresh, not an error. changed_since_prior_list and
change_description flag it, and qualifies_under_prior_list tells you what the
earlier vintage said - relevant if the project began construction while the
location was listed.
Why is msa_name empty on a row that qualifies? The IRS statistical-area
list is county-level and publishes no area name. The DOE/NETL polygon layer is
the only source of MSA names and it lags the notice, so a newly listed county has
no published name. Use county_name and state_name.
What is Vintage 1 versus Vintage 2? The MSA / non-MSA groupings differ between the 2010 and 2020 decennial census delineations. A county qualifies only if it meets the criteria under the same vintage, so both flags are reported.
Does a negative rule out the bonus? No. The Brownfield Site category is not screened here.
What happens if DOE or the geocoder is down? The affected category is
reported as null, partial_result is true, and the failing source is named
in sources_failed. If nothing could be determined for any asset the run fails
and nothing is billed.
Related actors
- BLM Solar Siting Area Screener - whether a site sits in a BLM-designated solar development area.
- Energy Corridor Section 368 Screener - federal energy right-of-way corridors.
- HIFLD Grid Proximity Screener - nearest transmission line, substation and serving utility.
- Interconnection Queue Tracker - ISO/RTO queue position and timelines.
- Site Due Diligence Bundle - 20 environmental and siting layers for one coordinate in a single call.
Informational screening only. Not tax advice and not an official IRS determination. Confirm against the current IRS notice and the DOE mapping tool, and consult a tax advisor before claiming the bonus credit.


