CBAM Report Helper: EU Carbon Border Adjustment Compliance
Pricing
from $5.00 / 1,000 results
CBAM Report Helper: EU Carbon Border Adjustment Compliance
Screen EU imports against Carbon Border Adjustment Mechanism (CBAM) Annex I. Returns sector (cement, steel, aluminium, fertilisers, electricity, hydrogen), country-specific default emissions per Reg. 2025/486, 50-tonne threshold check, and Omnibus 2025 obligations. Up to 5,000 shipments per run.
Pricing
from $5.00 / 1,000 results
Rating
0.0
(0)
Developer
Rafał Chudzik
Actor stats
0
Bookmarked
2
Total users
0
Monthly active users
an hour ago
Last modified
Categories
Share
CBAM Report Helper
Screen EU imports against the Carbon Border Adjustment Mechanism (CBAM), Regulation (EU) 2023/956, including the October 2025 Omnibus simplification. Send an HS code and a country of origin; get back scope, sector, country-specific default emission factor (Commission Implementing Reg. (EU) 2025/2621), an indicative embedded-emissions estimate, the 50-tonne de minimis threshold check, and the obligations applicable to the CBAM definitive period (which started 1 January 2026; certificate purchase mechanics begin 1 February 2027).
This Actor is not affiliated with, sponsored, or endorsed by the European Commission, the CBAM Registry, national customs authorities, or any CBAM competent authority. Only the regulations published in the Official Journal of the EU (eur-lex.europa.eu) are authentic.
Use this Actor when: you import iron and steel, aluminium, cement, fertilisers, electricity, or hydrogen into the EU; you are budgeting CBAM certificate cost for 2027; you need to know which shipments fall under the 50-tonne SME threshold; or you are sourcing across multiple countries and want to compare embedded emissions before committing.
Quick start
{"shipments": [{ "query": "7208.10", "country": "CN", "tonnes": 250 },{ "query": "7601.10", "country": "MZ", "tonnes": 100 }]}
That run costs $0.001 + 2 × $0.005 = $0.011. The Chinese hot-rolled steel returns the country-specific default 2.32 tCO2e/t × 250 t = 580 tCO2e indicative embedded. The Mozambique unwrought aluminium gets 6.50 tCO2e/t × 100 t = 650 tCO2e indicative embedded. Both are indicative exposure estimates, not payable amounts: real CBAM cost depends on weekly EU ETS auction averages (from 1 February 2027) and verified installation-level emissions, not on default values.
What it returns
For each shipment row:
- scope: yes / no, against CBAM Annex I (cement, iron and steel, aluminium, fertilisers, electricity, hydrogen)
- sector: one of the six categories
- HS prefix: longest match against Annex I
- country flags:
origin_is_eu_member(intra-EU shipments),exempt_origin(Iceland, Liechtenstein, Norway, Switzerland and micro-territories),exempt_under_50t_threshold(Omnibus SME relief) - default emission factor: country-specific (Commission Implementing Reg. (EU) 2025/2621 Annex II) where published, EU-wide default (Annex I) otherwise
- estimated embedded emissions:
factor × tonnes, rounded - deadlines: certificate sales start
1 February 2027, annual declaration30 September of the year following import, quarterly certificate holding50% - structured obligations: declarant authorisation, certificate purchase, annual declaration, verified-emissions submission
- legal basis: Reg. 2023/956 articles plus 2025/2621 (defaults) and Omnibus simplification citations
Why this Actor exists
Three things make CBAM hard to do by hand:
- Annex I is sparse but precise: about 150 HS codes across six sectors, mixing 4-digit headings (whole subheading in scope) with 6/8-digit subheadings (only specific products).
- Default emission factors are matrix-shaped:
(HS code, country)lookup, with the Commission Implementing Reg. (EU) 2025/2621 Annex II covering ~30 country-specific entries and Annex I covering ~120 EU-wide defaults. - The October 2025 Omnibus changed several deadlines and thresholds: sales date, declaration deadline, threshold, quarterly holding all moved. Some pre-Omnibus guidance may be outdated; verify against the latest Commission publications.
This Actor encodes the consolidated regime so a single shipment screening is one API call.
Input
{"shipments": [{ "query": "7208.10.00", "country": "CN", "tonnes": 250 },{ "query": "7214.20.00", "country": "TR", "tonnes": 1200 },{ "query": "Hot-rolled steel coils", "country": "Turkey", "tonnes": 80 },{ "query": "7601", "country": "MZ", "tonnes": 500 },{ "query": "Portland cement", "country": "EG", "tonnes": 150 },{ "query": "281410", "country": "Trinidad and Tobago", "tonnes": 60 },{ "query": "2716", "country": "UA", "tonnes": 1500000 },{ "query": "8517", "country": "CN", "tonnes": 100 }],"calendarYear": 2026}
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
shipments | array of objects | yes | n/a | Up to 5,000 shipments per run. |
shipments[].query | string | yes | n/a | HS / CN code at any precision (4 / 6 / 8 / 10 digit, dots and spaces allowed, optional HS / CN prefix), OR a plain-English commodity name (steel, cement, urea). |
shipments[].country | string | no | n/a | ISO-2 (CN), ISO-3 (CHN), or full name (China, Türkiye, Trinidad and Tobago). Country drives EF lookup and EU-member / exempt-origin classification. |
shipments[].tonnes | number | no | n/a | Net mass (annual cumulative) for this shipment line. Used both for the 50-tonne threshold check and for the embedded-emissions estimate. |
calendarYear | integer | no | 2026 | Year these imports relate to. Used for reporting-period context in obligations text. Range: 2024-2030. |
Output
One dataset row per shipment.
Chargeable shipment (Chinese hot-rolled steel, 250 tonnes):
{"query": "7208.10","query_type": "hs_code","country_input": "CN","calendar_year": 2026,"in_scope": true,"cbam_sector": "iron_and_steel","hs_code": "7208","hs_label": "Flat-rolled products of iron or non-alloy steel, hot-rolled","country_iso2": "CN","tonnes_declared": 250,"origin_is_eu_member": false,"exempt_under_50t_threshold": false,"exempt_origin": false,"default_emission_factor": 2.32,"default_emission_factor_source": "Commission Implementing Reg. (EU) 2025/2621 country-specific default for CN","estimated_embedded_emissions_t_co2e": 580.0,"certificate_sales_start": "1 February 2027","annual_declaration_deadline": "30 September of the year following import","quarterly_holding_percent": 50,"obligations": ["Apply for CBAM authorised declarant status before placing CBAM goods on the EU market...","From 1 February 2027 purchase CBAM certificates corresponding to embedded emissions...","Submit an annual CBAM declaration by 30 September of the year following import...","Verify embedded emissions at installation level using accredited verifiers..."],"legal_basis": ["Reg. (EU) 2023/956, Art. 5 (Application as authorised declarant)","Reg. (EU) 2023/956, Art. 22 (Annual CBAM declaration)","Reg. (EU) 2023/956, Art. 22a (Quarterly certificate holding)","Commission Implementing Reg. (EU) 2025/2621 (Default values for embedded emissions)","Omnibus simplification (October 2025): postponed certificate sales to 1 February 2027; introduced 50-tonne threshold; reduced quarterly holding from 80% to 50%"],"source_url": "https://eur-lex.europa.eu/eli/reg/2023/956/oj"}
Below 50-tonne threshold (Omnibus SME exemption, 30 t aluminium):
{"query": "7601.10","country_iso2": "MZ","tonnes_declared": 30,"in_scope": true,"cbam_sector": "aluminium","exempt_under_50t_threshold": true,"obligations": ["Importer is below the 50-tonne annual threshold (Omnibus simplification). No CBAM authorisation, no quarterly certificate holding, and no annual declaration required for this calendar year, provided the cumulative tonnage stays below 50 tonnes for ALL CBAM goods combined."]}
Exempt origin (EEA + ETS-linked: IS, LI, NO, CH):
{"query": "7601","country_iso2": "IS","in_scope": true,"cbam_sector": "aluminium","exempt_origin": true,"obligations": ["Origin IS is exempt from CBAM (ETS-linked or geographic exemption). No CBAM declaration is required for shipments from this country."]}
EU member origin (intra-EU movement is not an import):
{"query": "7208.10","country_iso2": "DE","origin_is_eu_member": true,"obligations": ["Origin DE is an EU member state. CBAM applies only to imports from third countries (Reg. (EU) 2023/956 Art. 2(1)). Intra-EU movements are not imports and do not trigger CBAM."]}
Out of scope:
{"query": "8517","in_scope": false,"cbam_sector": null,"obligations": ["Product is outside the scope of CBAM Annex I. No CBAM obligations apply."],"notes": ["CBAM scope covers six sectors (cement, iron and steel, aluminium, fertilisers, electricity, hydrogen). Other goods may still be covered by EU ETS, EUDR or other regimes."]}
Code examples
Apify Client (Python)
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("ravch/cbam-report-helper").call(run_input={"shipments": [{"query": "7208.10", "country": "CN", "tonnes": 250},{"query": "7601.10", "country": "MZ", "tonnes": 100},{"query": "252310", "country": "TR", "tonnes": 5000},]})total = 0.0for item in client.dataset(run["defaultDatasetId"]).iterate_items():co2e = item.get("estimated_embedded_emissions_t_co2e") or 0total += co2eets_price_eur = 80print(f"2026 portfolio embedded emissions: {total:,.0f} tCO2e")print(f"At ~EUR {ets_price_eur}/t ETS: certificate cost = EUR {total * ets_price_eur:,.0f}")
curl (synchronous run)
curl -X POST 'https://api.apify.com/v2/acts/ravch~cbam-report-helper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"shipments":[{"query":"7208.10","country":"CN","tonnes":250}]}'
How emission factors are resolved
Two-level lookup, longest match first:
-
Country-specific default (Commission Implementing Reg. (EU) 2025/2621 Annex II), applies to common origin × HS pairs:
7208 × CN= 2.32,7208 × TR= 2.05,7208 × RU= 2.27,7208 × IN= 2.407214 × TR= 1.86 (rebar from Turkey),7214 × CN= 2.30252310 × TR= 0.91,252310 × EG= 0.94,252310 × MA= 0.92,252310 × TN= 0.927601 × RU= 8.20,7601 × CN= 9.40,7601 × AE= 7.80,7601 × MZ= 6.50,7601 × IS= 4.50,7601 × NO= 5.20310210 × RU= 1.70,310210 × QA= 1.65,310210 × DZ= 1.78,310210 × EG= 1.85281410 × RU= 2.50,281410 × EG= 2.65,281410 × TT= 2.40280410 × RU= 9.50,280410 × DZ= 9.20
-
EU-wide default (Commission Implementing Reg. (EU) 2025/2621 Annex I), used when no country-specific value is published. Examples: hot-rolled steel 2.0, unwrought aluminium 8.6, cement clinker 0.96, urea 1.7, ammonia 2.5, electricity 0.42, hydrogen 9.0 tCO2e/t.
For the definitive period (from 1 January 2026), defaults are intended as fallback. Operators should obtain installation-level data from non-EU producers wherever possible, since defaults are deliberately conservative (higher than verified real values).
Use cases
- Pre-import customs validation: before lodging a customs declaration, confirm each line item's CBAM scope and certificate cost
- Indicative budget banding: get an order-of-magnitude estimate of yearly embedded emissions across an import portfolio to inform 2027 budget bands. Estimates are indicative; actual cost depends on verified installation-level emissions and EU ETS auction prices.
- 50-tonne de minimis monitoring: track cumulative imports and warn an importer when approaching the de minimis threshold mid-year. Note: electricity and hydrogen require separate treatment, do not assume automatic exemption.
- Supplier sourcing comparison: compare published default emission factors across origin countries during preliminary procurement screening. Final sourcing decisions should use verified installation data from the supplier.
- EEA / EU origin sanity check: confirm IS / LI / NO / CH shipments qualify as exempt and DE / FR / IT etc. are correctly classified as intra-EU
- AI agent integration: through the ../eu-compliance-mcp, ask Claude "what is my CBAM cost for 250t Chinese steel + 100t Mozambique aluminium?" and get a structured answer with article citations
FAQ
When does CBAM actually start? The CBAM definitive regime applies from 1 January 2026 (Art. 36 of Reg. (EU) 2023/956). Importers above the 50-tonne threshold must apply for authorised CBAM declarant status. Certificate purchase and surrender mechanics for 2026 emissions are deferred: certificate sales begin 1 February 2027, and the first annual declaration is due 30 September 2027 for 2026 imports.
What's the 50-tonne threshold? Under the Omnibus simplification, importers whose cumulative annual net mass of CBAM goods covered by the de minimis rule stays at or below 50 tonnes per importer per calendar year may be exempt from authorisation, certificate purchase, and annual declaration. Important caveat: electricity and hydrogen require separate treatment under Reg. (EU) 2025/2083 and should not be treated as automatically exempt under the 50-tonne threshold without verification. Always confirm coverage against the current Commission guidance.
Why is the quarterly holding 50% and not 80%? The October 2025 Omnibus simplification reduced the year-to-date certificate-holding requirement from the original 80% to 50%, freeing up working capital for importers.
My origin is Iceland / Norway / Switzerland, am I really exempt?
Iceland, Liechtenstein, Norway (EEA + ETS) and Switzerland (linked ETS) are listed as exempt origins under Art. 2(3) of Reg. (EU) 2023/956. The Actor flags exempt_origin: true for these. Verify the goods did not transit through a non-exempt country with substantial transformation.
My origin is Germany / France / Poland, what does the Actor say?
Intra-EU movements are not imports, so CBAM does not apply (Art. 2(1)). The Actor flags origin_is_eu_member: true and reminds you to verify the customs origin declaration in case the goods were originally produced outside the EU and merely transited through the Member State.
Does CBAM cover scrap (HS 7204) or finished goods (HS 7318 fasteners)? Both fall within Annex I and the Actor returns them in scope. Annex I is broader than just primary metals; verify the specific CN code against the current Annex I text.
The Commission keeps amending CBAM. How do I know I'm using current data?
The Actor encodes the regulations available at its build date (actor_version field in each output). After each Commission amendment, the Actor data is updated and a new version is published. Always cross-check against eur-lex.europa.eu and the CBAM Registry before relying on output for compliance documentation.
Why is "estimated_embedded_emissions_t_co2e" called "indicative"? Default emission values are a fallback. Actual CBAM cost depends on (a) verified emissions at the production installation level, and (b) the certificate price, which tracks weekly EU ETS auction averages from 1 February 2027 (quarterly during 2026). The Actor's estimate is an indicative exposure estimate, not a payable amount. Use it for budgeting bands, not for filing declarations.
Will CBAM expand to other sectors? The Commission has indicated possible expansion to organic chemicals, polymers, and others. The current Actor scope is the six original sectors plus hydrogen. New sectors will be added as they enter Annex I.
Pricing
Pay per event. No subscription, no setup fee.
| Event | Price |
|---|---|
| Actor Start (once per run) | $0.001 |
| Shipment Screened (per item) | $0.005 |
Screening 1,000 shipments costs $5.001.
Limitations
- Screens scope and obligations and applies the Commission default factors. Does not submit CBAM declarations on your behalf, does not verify installation-level emissions, does not purchase CBAM certificates from the registry.
- Country-specific defaults table covers a subset of origin × HS combinations published in Commission Implementing Reg. (EU) 2025/2621 Annex II. For uncommon origins, the Actor falls back to the EU-wide default. Always cross-check against the current Annex II text.
- Default emission values are a fallback; from 1 January 2026 their use is restricted to specific circumstances. Operators are expected to obtain installation-level data wherever possible.
- The 50-tonne de minimis threshold has special treatment for electricity and hydrogen under Reg. (EU) 2025/2083: do not assume automatic exemption for these sectors based on the threshold alone.
- A
screening_result: "no_match"answer means no Annex I entry was matched by the supplied input. It does NOT prove the product is exempt from CBAM; misclassification at customs is a common cause of false negatives. Verify CN classification before relying on a negative result. - Out-of-scope answers do not consider downstream extension proposals. The Commission has indicated it may extend CBAM to additional sectors.
- This Actor is not affiliated with or endorsed by the European Commission, the CBAM Registry, or any Member State competent authority.
Sources
- Regulation (EU) 2023/956 (CBAM) consolidated text on EUR-Lex
- Commission Implementing Commission Implementing Reg. (EU) 2025/2621: default emission values
- European Commission, CBAM portal
- CBAM transitional registry guidance
- EU ETS price (live)
Related compliance Actors
- ../eu-compliance-mcp: call this Actor (and 3 others) from Claude Desktop, Cursor, or any MCP-compatible AI client
- ../reach-svhc-checker: separate regulation for chemical substances of very high concern
- ../eudr-screener: EU Deforestation Regulation for cattle, cocoa, coffee, oil palm, rubber, soya, wood
- ../battery-regulation-passport: Reg. (EU) 2023/1542 scope check, Battery Passport requirements
Need more
For full CBAM declaration generation (XML in the Authorisation Module schema), installation-level emission data ingestion from supplier reports, CBAM Registry API integration, multi-shipment certificate purchase forecasting with quarterly cash-flow modelling, or combined CBAM + EUDR + REACH + Battery joint screening, email contact@ravch.dev. We reply within 24 hours.
Disclaimer
This Actor is an unofficial screening and estimation tool based on publicly available EU CBAM legal texts and Commission-published default values. It is not affiliated with, sponsored, or endorsed by the European Commission, national customs authorities, the CBAM Registry, or any CBAM competent authority. Only the regulations published in the Official Journal of the EU (eur-lex.europa.eu) are authentic.
Output is provided "AS IS" without warranty of any kind, express or implied. Results are intended for screening, triage, and indicative estimation, not as a final legal, customs, tax, accounting, or environmental verification advice. The author (ravch.dev) accepts no liability for losses, fines, missed deadlines, incorrect declarations, or compliance failures arising from reliance on this Actor's output.
Before any import, declaration, budgeting, certificate purchase, or surrender decision, you must independently verify against the official sources:
- CN classification (TARIC) for the goods
- Customs origin (not country of dispatch)
- Importer-level annual cumulative tonnage
- Threshold eligibility, including the special treatment of electricity and hydrogen
- Actual embedded emissions at installation level
- Carbon-price deductions for any carbon price already paid in the country of origin
- Verification requirements and authorised CBAM declarant status
- Certificate purchase / surrender obligations as published by the Commission and your Member State competent authority
The estimated_embedded_emissions_t_co2e field is an indicative exposure estimate, not a payable amount. The CBAM certificate price tracks weekly EU ETS auction averages from 1 February 2027 onward (quarterly during 2026). Actual financial exposure will depend on verified emissions and market prices, not on default values.
For binding compliance decisions, consult the official Commission CBAM portal at https://taxation-customs.ec.europa.eu/carbon-border-adjustment-mechanism_en, the CBAM Registry, your Member State competent authority, and qualified counsel.