Skip to main content

What's Inside the K-REACH Chemical Substance API: 5 Queries for Compliance Workflows

If you handle chemical compliance for products entering Korea, the question is rarely "is this chemical dangerous." It is "how does Korea classify it, is it registered, and does it carry a GHS label requirement." Those answers live in K-REACH — Korea's Act on Registration and Evaluation of Chemical Substances — and in the GHS classifications maintained alongside it.

The K-REACH Chemical Substance API exposes 47,517 registered substances, each with nine regulatory flags, plus GHS hazard data, through a single JSON interface. Like our cosmetics API, the data is Korean in origin, but the fields a chemical compliance workflow uses — CAS number, English name, the hazard flags, GHS pictogram codes, UN numbers — come back in English or in international standard form. A non-Korean-speaking analyst can run the whole thing.

This post walks through five real queries and what each one answers.


The nine flags

Every substance in the database carries nine boolean regulatory flags. They are the backbone of every query below:

  • is_toxic — toxic substance
  • is_prohibited — prohibited substance
  • is_restricted — restricted substance
  • is_priority — priority-management substance
  • is_cmr — carcinogenic, mutagenic, or reprotoxic
  • is_persistent — persistent organic pollutant
  • is_accident_prep — accident-preparedness substance
  • is_registration_req — registration required
  • is_rotterdam — Rotterdam Convention (trade-controlled)

Scenario 1: Look up a substance by CAS number

The standard entry point. Given a CAS number, return the substance's identifiers, names, and all nine flags in one call. Here is a PFOS salt — one of the most heavily classified substances in the database.

GET /v1/substance/cas/2795-39-3

{
  "substance": {
    "id": 19387,
    "cas_no": "2795-39-3",
    "ke_no": "KE-18223",
    "name_eng": "Potassium perfluorooctanesulfonate",
    "name_kor": "퍼플루오로옥탄술폰산 칼륨",   // Korean name
    "formula": null,
    "weight": null,
    "flags": {
      "is_toxic": true,
      "is_restricted": false,
      "is_prohibited": false,
      "is_priority": true,
      "is_cmr": true,
      "is_accident_prep": false,
      "is_persistent": true,
      "is_registration_req": false,
      "is_rotterdam": true
    }
  },
  "regulations": [ ... ]
}

Five flags at once — toxic, priority-management, CMR, persistent organic pollutant, and Rotterdam. The ke_no is Korea's own substance identifier (KE number), used in MFDS and Ministry of Environment notices. The regulations array, abbreviated here, lists the Korean classification notices behind each flag with their dates. Everything a compliance analyst needs to read the substance's status is in English or numeric form; only name_kor is Korean.


Scenario 2: Pull GHS label data for an SDS

For anyone writing a Safety Data Sheet or a label, the GHS endpoint returns the signal word, pictogram codes, UN number, and hazard classifications. Here is benzene.

GET /v1/ghs/71-43-2

{
  "substance": {
    "cas_no": "71-43-2",
    "name_eng": "Benzene",
    "formula": "C6H6",
    "weight": "78.11",
    "flags": { "is_toxic": true, "is_priority": true,
               "is_accident_prep": true, "is_registration_req": true, ... }
  },
  "ghs": {
    "signal_word": "위험",          // "Danger"
    "pictograms": ["GHS02", "GHS07", "GHS08"],
    "un_number": "1114",
    "hazards": [ ... ]
  }
}

The pictogram codes (GHS02 flammable, GHS07 irritant, GHS08 health hazard) and the UN number (1114) are international standards — the same on a label in Seoul, Frankfurt, or Houston. Only the signal word comes back in Korean (위험 = "Danger"), and the GHS code for it is universal. The benzene classification here matches its standard GHS profile: a Danger signal word with flammable, irritant, and serious-health-hazard pictograms.


Scenario 3: Search by name

When you do not have a CAS number, a name search returns every match with its flags. A partial match on "formaldehyde" returns the parent compound and its many reaction products and derivatives.

GET /v1/substance/search?q=formaldehyde

{
  "page": 1,
  "limit": 10,
  "has_next_page": true,
  "items": [
    {
      "id": 60,
      "cas_no": "98219-66-0",
      "name_eng": "Rosin, maleated, reaction products with formaldehyde",
      "flags": { "is_toxic": false, "is_prohibited": false, ... }
    },
    ...
  ]
}

Results are paginated (has_next_page tells you when to fetch more). This is how you map a whole chemical family — every formaldehyde derivative, every perfluoro compound — and see at a glance which carry flags and which do not. Searching by English name returns English-named results; the flags are English throughout.


Scenario 4: List everything under one regulation type

The regulations endpoint returns every substance under a chosen classification. This is the query behind our published analyses — for example, pulling the full prohibited list.

GET /v1/regulations/list?type=prohibited

{
  "regulation_type": "prohibited",
  "page": 1,
  "has_next_page": true,
  "items": [
    {
      "id": 2219,
      "cas_no": "20859-73-8",
      "name_eng": "Aluminum phosphide",
      "flags": { "is_toxic": true, "is_prohibited": true,
                 "is_rotterdam": true, ... }
    },
    {
      "id": 2522,
      "cas_no": "92-67-1",
      "name_eng": "4-Aminobiphenyl",
      "flags": { "is_toxic": true, "is_prohibited": true, ... }
    },
    ...
  ]
}

The type parameter accepts each of the nine flags: prohibited, toxic, restricted, priority, cmr, persistent, accident_prep, registration_req, and rotterdam. The prohibited list above is the data behind our 97-banned-substances post. Change the type to persistent and you get the persistent organic pollutants — the data behind our PFAS analysis.


Scenario 5: Cross-reference a class against a flag

Scenarios 3 and 4 combine into the query most compliance work actually needs. Pull a chemical family by name search, then check each member against a regulation list — for example, which perfluoro compounds are flagged as persistent organic pollutants.

GET /v1/regulations/list?type=persistent

{
  "regulation_type": "persistent",
  "items": [
    {
      "cas_no": "2043-53-0",
      "name_eng": "Decane, ...heptadecafluoro-10-iodo-",
      "flags": { "is_persistent": true, ... }
    },
    ...
  ]
}

For a compliance team tracking PFAS or other substances of concern across markets, this is the core workflow: identify the family, pull the flagged subset, and compare against what other jurisdictions restrict. The flags map cleanly onto international frameworks — is_persistent to the Stockholm Convention, is_rotterdam to the Rotterdam Convention — so a Korean classification can be lined up against a global one without translation.


Working in English

Almost everything a chemical compliance workflow needs is English or international-standard: cas_no, ke_no, name_eng, formula, weight, all nine flags, the GHS pictogram codes, and the UN number. The Korean fields — name_kor, the signal word text, and the full Korean notice references in the regulations array — are preserved so a Korean-speaking analyst can verify against the source, but they are not needed to read a substance's regulatory status, build an SDS, or compare against another market's rules.


Sources and scope

The data is collected from Korea's official open-data portal (data.go.kr), drawing on the Ministry of Environment chemical substance and GHS datasets. It covers 47,517 registered substances with their K-REACH classifications and GHS hazard data. The flags reflect the classification notices recorded for each substance; the original notice references are preserved in the regulations array for verification.

For how this data turns into analysis, see 47,000 Chemicals in Korea's Database. Only 97 Are Banned and the PFAS analysis. For cosmetic ingredient data, see our K-Beauty API guide.


Getting started

The K-REACH Chemical Substance API is available on RapidAPI. The free tier covers exploration; higher tiers raise the request volume for bulk classification work.


Methodology and Sources

All API responses shown were retrieved directly from the live K-REACH Chemical Substance API. JSON payloads have been abbreviated for readability, and English annotations after // were added for explanation — they are not part of the API output. The full regulations arrays, containing Korean classification notices and dates, are not shown in full.

Underlying data: Korea's data.go.kr open-data portal, Ministry of Environment chemical substance and GHS datasets, covering 47,517 registered substances.

The benzene GHS classification (signal word Danger; pictograms GHS02, GHS07, GHS08; UN 1114) was cross-checked against published GHS classification references and standard safety data sheets.


Important Notice: This article is for informational purposes only. It is not legal, regulatory, or safety advice. Chemical classifications and GHS data change and must be verified against the current official source before use in any registration, SDS, or labeling decision. API responses reflect the database at the time of retrieval. For full terms, see our Disclaimer.


Decoded Korea publishes data-driven analysis of Korean cosmetic ingredients, chemical regulations, and safety data.

Comments

Popular posts from this blog

Your 20% Vitamin C Serum Has No Concentration Limit. In Any Country.

Vitamin C serums are sold at 10%, 15%, 20%, and sometimes 30% concentration. These are high numbers for an active ingredient. For comparison, the EU recently capped retinol at 0.3% in most cosmetics. So how is 20% vitamin C legal when 0.3% retinol is the EU limit? Because no country regulates L-Ascorbic Acid concentration in cosmetics. None of the 10 markets in our database — EU, Korea, Japan, China, Taiwan, ASEAN, Brazil, Argentina, the US, or Canada — has a limit. 76 forms of vitamin C Our database contains 76 ingredients with "Ascorbic" or "Ascorbyl" in their INCI names. Vitamin C in skincare is not a single ingredient — it is a family of compounds, each with different stability, potency, and skin penetration characteristics. The ones consumers encounter most often: Form INCI name Characteristics L-Ascorbic Acid Ascorbic Acid Most potent, least stable. Requires low pH. The form used in 10–20% serums MAP Magnesium Ascorbyl Phosphate Stable,...

Retinol Had No Limits in Most Countries Until the EU Set Them in 2024

Retinol is probably the most recommended ingredient in skincare. Dermatologists recommend it. Beauty editors rank it above everything else. K-Beauty brands put it in serums, creams, and sleeping masks. It has decades of published research behind it. For most of that history, most countries did not regulate how much retinol a cosmetic product could contain. Canada had a limit (1.0% Retinol Equivalent), but Korea, Japan, China, the US, and the EU had none. That changed in April 2024, when the EU adopted Regulation 2024/996 and set concentration limits well below Canada's. We checked our database to see how this compares across 10 countries. What retinol is Retinol is a form of vitamin A. In skincare, it promotes cell turnover — old skin cells shed faster, new ones replace them. This is why retinol is used for fine lines, uneven skin tone, acne, and texture. It is one of the few cosmetic ingredients with clinical evidence supporting its anti-aging claims. Retinol is not a single...

Banned in Europe, Legal in Korea: 5 Ingredients That Split Global Regulators

The same moisturizer that sits on a shelf in Seoul could be pulled from a store in Paris. Not because of a labeling error or a packaging defect — but because an ingredient inside is classified differently by two governments looking at the same scientific data. This happens more often than most consumers realize. The EU and South Korea — both major cosmetics markets with sophisticated regulatory systems — frequently disagree on where to draw the line. The EU's cosmetics regulation (EC 1223/2009) maintains one of the strictest banned substance lists in the world, with over 1,600 entries in Annex II. Korea's MFDS takes a different approach, often allowing the same ingredients under specific concentration limits or without restriction. Neither system is wrong. They operate under different regulatory philosophies: the EU leans toward the precautionary principle — restrict first, revisit later. Korea tends toward risk management — allow under controlled conditions, monitor outcomes...