REACH SVHC Checker: ECHA Candidate List CAS lookup
Pricing
from $5.00 / 1,000 results
REACH SVHC Checker: ECHA Candidate List CAS lookup
Look up any substance against the ECHA REACH SVHC Candidate List by CAS, EC number, or name. Returns inclusion date, reason for inclusion, and direct ECHA links. Live fetch from echa.europa.eu, cached 24h. For SCIP notification, Article 33 letters, BoM screening. Up to 5,000 substances per run.
Pricing
from $5.00 / 1,000 results
Rating
0.0
(0)
Developer
Rafał Chudzik
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
REACH SVHC Checker
Look up any substance against the ECHA REACH Candidate List of Substances of Very High Concern (SVHC) by CAS number, EC number, or chemical name. Returns inclusion date, reason for inclusion, and direct links to ECHA. Pulls live from echa.europa.eu/candidate-list-table and caches for 24 hours.
Use this Actor when: you author Safety Data Sheets, prepare a SCIP notification to ECHA, screen a Bill of Materials before EU market placement, or onboard a new supplier and want to bulk-check the substances they report.
Quick start
Send a list of CAS numbers, EC numbers, or substance names. Get one dataset row per query telling you whether it is on the SVHC Candidate List.
{"queries": ["Lead", "7439-92-1", "231-100-4", "Bisphenol A"]}
That run costs $0.001 (Actor start) + 4 × $0.005 = $0.021 total. Each query is independent, sending 5,000 substances in a single run is the same per-substance price as sending five.
Why this Actor exists
The EU REACH regulation (Reg. 1907/2006) makes every manufacturer, importer, and downstream user responsible for identifying SVHCs in their articles above 0.1% by weight. As of February 2026, 253 substances are on the Candidate List. ECHA typically updates the list around twice per year, but the schedule varies; always confirm the current state against the official ECHA portal. Manual lookup is slow and HTML scraping is fragile; this Actor automates the lookup and returns structured JSON for compliance workflow integration.
This Actor is not affiliated with, sponsored, or endorsed by ECHA. Only the list published on echa.europa.eu/candidate-list-table is the authentic version of record. This Actor is a screening tool that mirrors public ECHA data with attribution; it is not a substitute for the official portal.
Input
{"queries": ["DEHP", "117-81-7", "Bisphenol A", "204-211-0"],"fuzzyMatch": true,"forceRefresh": false}
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
queries | array of strings | yes | n/a | Up to 5,000 substance identifiers per run. Each entry may be a CAS number (e.g. 117-81-7), an EC number (e.g. 204-211-0), a substance name (DEHP, Bisphenol A), or a name with optional CAS / EC prefix. |
fuzzyMatch | boolean | no | true | When on, name queries tolerate partial matches and acronyms in parentheses. Turn off for strict exact-name lookup. |
forceRefresh | boolean | no | false | Force a fresh ECHA fetch instead of using the 24-hour cache. Use after a known ECHA update day. ECHA updates roughly twice per year but exact dates vary. |
CAS numbers without dashes (117817) are auto-formatted to 117-81-7. The matcher detects what kind of identifier you sent and routes accordingly.
Output
One dataset row per query. Matched substance:
{"query": "117-81-7","query_type": "cas","matched": true,"name": "Bis (2-ethylhexyl)phthalate (DEHP)","ec_number": "204-211-0","cas_number": "117-81-7","date_of_inclusion": "28-Oct-2008","reason_for_inclusion": "Toxic for reproduction (Article 57c)","details_url": "https://echa.europa.eu/substance-information/-/substanceinfo/100.003.829","decision_url": null,"source_url": "https://echa.europa.eu/candidate-list-table"}
When a name query matches multiple SVHC entries (e.g. phthalate matches 13 substances), they are returned under a matches array; the top-level fields show the first / best ranked match.
Non-match:
{"query": "sodium chloride","query_type": "name","matched": false,"name": null,"ec_number": null,"cas_number": null,"source_url": "https://echa.europa.eu/candidate-list-table"}
The Apify Console table view shows the columns Query, Match, Substance, CAS, EC, Inclusion Date, Reason by default.
Code examples
Apify Client (Python)
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("ravch/reach-svhc-checker").call(run_input={"queries": ["117-81-7", "Lead", "Bisphenol A"]})for item in client.dataset(run["defaultDatasetId"]).iterate_items():if item["matched"]:print(f"{item['query']}: SVHC since {item['date_of_inclusion']}")else:print(f"{item['query']}: not SVHC")
curl (synchronous run)
curl -X POST 'https://api.apify.com/v2/acts/ravch~reach-svhc-checker/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"queries": ["117-81-7", "Lead", "Bisphenol A"]}'
Excel / Google Sheets
The Apify integration for Sheets writes dataset rows directly into a tab. Set the Actor URL, paste your token, schedule a daily run.
Use cases
- SCIP notification screening: shortlist articles whose declared substances appear on the Candidate List, as a first step before a SCIP submission to ECHA. SCIP obligation under Article 9(1)(i) WFD has applied since 5 January 2021. The actor identifies candidates; final scope and timing of the SCIP submission must be verified against the ECHA portal and your legal team.
- BoM pre-screening: bulk-check 100-1,000 substance identifiers in a Bill of Materials before a new SKU ships. Treat hits as flags requiring follow-up review, not as final compliance determinations.
- Supplier onboarding triage: verify supplier-declared substances against the current Candidate List as part of the new-vendor checklist; route hits to your compliance team.
- Article 33 customer-letter triage: identify which substances in a customer's inquiry are on the Candidate List, then verify each result against the official ECHA entry before drafting your reply.
- REACH compliance research: structured lookup of inclusion date and reason as a starting point for hazard assessment. Note: Candidate List membership is not the same as full CLP hazard classification — use it alongside, not instead of, official Safety Data Sheet sources.
- AI agent grounding: through the ../eu-compliance-mcp, give Claude / Cursor / custom agents structured access to the SVHC list so they cite real inclusion dates instead of hallucinating.
For all of the above, treat actor output as screening assistance, not as a final regulatory determination. Always verify positive, negative, fuzzy, and substance-group results against the official ECHA portal before submitting any REACH, SCIP, SDS, or customer compliance documentation.
FAQ
How fresh is the data?
The Actor fetches the full Candidate List from ECHA on the first run of the day and caches it for 24 hours. Set forceRefresh: true to bypass the cache after a known ECHA update.
What if my CAS number has multiple dashes or no dashes?
The matcher accepts canonical (117-81-7), space-separated (117 81 7), and digits-only (117817) forms. Optional CAS or EC prefix is stripped automatically.
Why does a query for "lead" return two entries?
ECHA lists Lead (the metal, CAS 7439-92-1) and Lead di(acetate) (CAS 301-04-2) as separate SVHC entries. The matcher ranks the canonical entry first; the second appears in matches. Pass the specific CAS to disambiguate.
Does this cover Annex XVII restrictions or the Authorisation List? No, only the Candidate List (Article 59 REACH). Annex XVII (restrictions) and Annex XIV (authorisation) are different lists with different obligations. We can build those if there is demand, email us.
What about UK REACH or Turkey KKDIK? The Actor covers EU REACH only. UK REACH and KKDIK have similar but separate Candidate Lists.
My substance is a "substance group" (e.g. HBCDD, boric acid). Does it work?
Substance groups are returned as one entry by ECHA. Member-level CAS numbers live inside an expand/collapse panel that requires JavaScript to render and is not available in the static HTML. For substance groups, search by name (HBCDD, Boric acid) rather than by member CAS number.
Is this legal advice? No. The Actor reproduces public ECHA data in machine-readable form. Final compliance decisions are the operator's responsibility under Article 7 of REACH.
Pricing
Pay-per-event. No subscription. No setup fee.
| Event | Price |
|---|---|
| Actor Start (once per run) | $0.001 |
| Substance Checked (per query) | $0.005 |
Checking 1,000 substances in one run costs $5.001. Apify free-tier users get monthly platform credit that typically covers several thousand checks.
Limitations
- Covers the Candidate List only. Annex XVII / Annex XIV / SCIP database are separate ECHA lists not yet in scope.
- Substance-group entries (HBCDD, boric acid, lead chromate group, RCF) are matched by name, not by member CAS: see FAQ above.
- The ECHA HTML structure could change without notice. We monitor the page; expect a same-day fix if it does.
- ECHA may rate-limit fetch patterns it considers excessive. The Actor identifies itself with a clear User-Agent (
ravch-eu-compliance-svhc-checker) plus contact email, respects the 24-hour cache, and uses low request volume. We are not affiliated with or endorsed by ECHA; only the list published on echa.europa.eu is the authentic version of record. - Match quality matters. Fuzzy / substring / parenthetical matches are screening hints, not compliance-grade hits. The output
match_qualityandconfidencefields show how strong each match is. Treat anything belowconfidence: highas a candidate that requires manual verification on the ECHA portal. - A
matched: falseresult means no Candidate List entry was matched by this exact query — it does NOT mean the substance is exempt from REACH SVHC obligations. Substance groups, salts, hydrates, UVCB variants, and pre-existing entries with different naming conventions may still apply. Verify each negative result manually before relying on it.
Sources
- ECHA Candidate List of Substances of Very High Concern
- Regulation (EC) 1907/2006 (REACH) on EUR-Lex
- Article 33: Communication on substances in articles
- Article 7(2): Notification of substances in articles to ECHA
- SCIP database guidance
- How ECHA identifies SVHCs (Article 57)
Related compliance Actors
- ../eu-compliance-mcp: call this Actor (and 3 others) from Claude Desktop, Cursor, or any MCP-compatible AI agent
- ../eudr-screener: separate regulation for cattle, cocoa, coffee, oil palm, rubber, soya, wood
- ../cbam-report-helper: Carbon Border Adjustment Mechanism for cement, steel, aluminium, fertilisers, electricity, hydrogen
- ../battery-regulation-passport: Reg. (EU) 2023/1542 scope check, Battery Passport requirements
Need more?
For Annex XVII restrictions, Annex XIV Authorisation List, full SCIP database integration, country-specific REACH guidance (UK REACH, Turkey KKDIK), bulk API access (>100k checks/month), or enterprise SLA, email contact@ravch.dev. We reply within 24 hours.
Disclaimer
This Actor is an unofficial lookup tool that mirrors public ECHA Candidate List data. It is not affiliated with, sponsored, or endorsed by the European Chemicals Agency (ECHA), the European Union, or the American Chemical Society (ACS). Only the Candidate List published on echa.europa.eu/candidate-list-table is the authentic version of record (per ECHA Legal Notice section 3 and REACH Article 59(10)). CAS Registry Numbers® are a registered trademark of the American Chemical Society.
Output is provided "AS IS" without warranty of any kind, express or implied, including merchantability, fitness for a particular purpose, or compliance accuracy. Results are intended for screening and workflow automation, not as a final legal or regulatory determination. The author (ravch.dev) accepts no liability for losses, fines, or compliance failures arising from reliance on this Actor's output.
By using this Actor you accept that:
- You are responsible for verifying every result (positive, negative, fuzzy, group-substance, salt, hydrate, UVCB) against the official ECHA portal before submitting any REACH, SCIP, SDS, customer Article 33 response, or other compliance documentation.
- A
matched: trueresult withconfidence: lowormatch_quality: fuzzy_*is a possible match only and requires manual verification. - A
matched: falseresult means no Candidate List entry was matched by this exact query — it does NOT mean the substance falls outside REACH SVHC scope. - Candidate List inclusion has immediate effect on REACH Article 7, 31, and 33 obligations once published; the Actor's 24-hour cache and ECHA's intermittent update schedule may briefly lag the official list.
- This output is not a substitute for advice from qualified REACH professionals or the legal team responsible for your compliance program.
For binding compliance decisions, consult the official ECHA portal and qualified counsel.