IRA Energy Community Bonus Screener — 10% ITC/PTC Adder avatar

IRA Energy Community Bonus Screener — 10% ITC/PTC Adder

Pricing

from $5.50 / 1,000 results

Go to Apify Store
IRA Energy Community Bonus Screener — 10% ITC/PTC Adder

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

Kyle Maloney

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

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:

SourceRowsVintage
NETL 2024_MSAs_NonMSAs_that_are_Energy_Communities901 countiesNotice 2024-48
NETL MSA_NonMSA_Energy_Communities24877 countiesNotice 2025-31
IRS Notice 2026-39 Appendix 1867 countiesoperative
NETL 2024_Coal_Closure_Energy_Communities4,325 tractsNotice 2024-48
NETL CoalClosureCensusTracts244,423 tractsNotice 2025-31
+ IRS Notice 2026-39 Appendix 2+54 tractsoperative

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:

  1. Coal Closure - census tracts where a coal mine closed after 1999 or a coal-fired generating unit retired after 2009, plus directly adjoining tracts.
  2. 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
}
InputTypeNotes
assetsarray (required){ "lat": number, "lon": number, "label": string }. One billable row per asset. Omitting it fails the run before anything is billed.
maxAssetsintegerSafety 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.

FieldTypeDescription
asset_labelstringCaller-supplied label for the screened site (auto-generated if omitted).
asset_latnumberScreened point latitude (WGS84).
asset_lonnumberScreened point longitude (WGS84).
qualifies_for_ira_energy_community_bonusbooleanTrue 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_adderstringThe 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_communitybooleanTrue 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_geoidstring2020 census-tract GEOID of the coal-closure tract containing the point.
closure_typestringWhy 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_countystringCounty of the coal-closure tract containing the point.
coal_closure_statestringState of the coal-closure tract containing the point.
in_energy_community_msabooleanTrue 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_namestringName 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_typestringWhether the DOE/NETL polygon covering the point is an MSA or a Non_MSA. Null when that layer does not cover the county.
msa_countystringCounty of the qualifying Statistical Area containing the point.
msa_statestringState of the qualifying Statistical Area containing the point.
determination_basisstringPlain-language explanation of the qualification, of a verified negative, or of exactly which categories could NOT be checked when no determination was reached.
determination_categoriesarrayWhich 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_citationstringThe lists, layers and effective dates behind this row.
disclaimerstringInformational-use disclaimer; not tax advice, and the Brownfield category is not screened.
errorstringError message for an invalid coordinate; null otherwise. Per-source failures are reported in the *_status and sources_failed columns, not here.
checked_atstringUTC timestamp of the screening run.
energy_community_list_noticestringThe IRS notice whose lists produced the determination on this row. Currently IRS Notice 2026-39, released 2026-06-10.
energy_community_list_effective_datestringDate the operative energy-community lists took effect (ISO date).
energy_community_list_next_update_expectedstringCalendar year in which the IRS is expected to publish the next annual update to these lists.
screening_lists_presumed_currentbooleanFalse 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_sourcestringExactly which list and key produced the Statistical Area answer. Null when the county could not be resolved.
coal_closure_sourcestringExactly which sources produced the Coal Closure answer. Null when no coal source answered.
census_tract_geoid_2020stringThe site 11-digit 2020 census tract, resolved independently of the energy-community layers. Null when the geocoder did not answer.
county_fipsstringThe site 5-digit county FIPS - the key used against the Statistical Area list.
county_namestringCounty or county-equivalent name containing the site.
state_namestringState containing the site.
geocoder_sourcestringWhich geocoder resolved the tract and county: fcc (FCC Census Block API) or tigerweb (Census TIGERweb fallback). Null when neither answered.
statistical_area_listed_in_noticebooleanTrue 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_eligiblebooleanEligible 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_eligiblebooleanEligible under the Vintage 2 (2020 decennial census) MSA/non-MSA grouping.
statistical_area_vintage_notestringPlain-language explanation of the vintage eligibility, including the warning when a county is eligible under only one vintage.
coal_closure_basisstringWhich 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_rawstringThe tract_type value exactly as published by the DOE/NETL coal-closure layer, before normalization.
coal_closure_type_recognizedbooleanFalse 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_2026booleanTrue 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_2023booleanTrue 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_noticestringThe prior-vintage IRS notice reflected by the DOE/NETL 2024 mapping-tool layers.
prior_list_effective_datestringPublication date of the prior-vintage DOE/NETL layers (ISO date).
qualifies_under_prior_listbooleanWhether 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_listbooleanCoal Closure answer from the prior-vintage DOE/NETL 2024 layer. Null when that layer did not answer.
in_energy_community_msa_prior_listbooleanStatistical Area answer from the prior-vintage DOE/NETL 2024 layer. Null when that layer did not answer.
prior_list_coal_tract_geoidstringCensus tract GEOID reported by the prior-vintage coal-closure layer.
prior_list_msa_namestringStatistical Area name reported by the prior-vintage MSA layer.
changed_since_prior_listbooleanTrue when the operative answer differs from the prior-vintage answer. Null when either answer is unavailable.
change_descriptionstringPlain-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_pwaintegerPercentage 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_pwaintegerPercentage 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_percentintegerPercent increase to the section 45 / 45Y production credit rate for a qualifying site. Null when the site does not qualify.
brownfield_category_screenedbooleanAlways 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_statusstringOutcome of the current DOE/NETL coal-closure layer query: ok, unavailable, or not_applicable.
netl_coal_current_errorstringError message when the current coal-closure layer did not answer; null on success.
netl_coal_prior_statusstringOutcome of the prior-vintage DOE/NETL coal-closure layer query: ok, unavailable, or not_applicable.
netl_coal_prior_errorstringError message when the prior-vintage coal-closure layer did not answer; null on success.
netl_msa_prior_statusstringOutcome of the prior-vintage DOE/NETL MSA layer query: ok, unavailable, or not_applicable.
netl_msa_prior_errorstringError message when the prior-vintage MSA layer did not answer; null on success.
geocoder_statusstringOutcome of the census tract and county lookup: ok, unavailable, or not_applicable.
geocoder_errorstringError message when neither the FCC Census Block API nor Census TIGERweb resolved the point; null on success.
sources_failedarrayNames 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_resultbooleanTrue 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

SourceWhat it providesKeyless
IRS Notice 2026-39 Appendix 1 (867 counties)Operative Statistical Area list, with Vintage 1 / Vintage 2 flagsembedded, 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 refreshedembedded, transcribed verbatim
DOE/NETL CoalClosureCensusTracts24 FeatureServer/574,423 coal-closure tract polygons, cumulative through Notice 2025-31yes
DOE/NETL 2024_Coal_Closure_Energy_Communities FeatureServer/04,325 prior-vintage coal tract polygonsyes
DOE/NETL 2024_MSAs_NonMSAs_that_are_Energy_Communities FeatureServer/0901 prior-vintage statistical-area counties, and the only published MSA namesyes
FCC Census Block API2020 census tract + county for the siteyes
Census TIGERweb 2020 tractsGeocoder fallbackyes

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.

  • 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.