I am trying to pass INCI names (perhaps my first mistake) to the OpenFDA api. Some INCI names give me something to work with; however, others I think are not really passable, even after replacing spaces with + or even passing the string through php's urlencode() function.

Some examples follow: Acrylates/Ammonium Methacrylate Copolymer 2-Amino-3-Nitrophenol 2,3-Naphthalenediol 1-Naphthol 1,2-hexanediol

Notice the commas and slashes (don't think the dashes matter).

I am working on using another identifier, like unii, but meanwhile is there a good quick fix I've totally missed? Will the "exact match" strategies provide some relief?

Hopefully my "new to programming" status is not overly glaring in my question.

1 Answer 1


In which API endpoint are you searching? Drug adverse events? Drug labeling? You should look at the particular API endpoint you're searching to see what fields are available, and do some quick searches for the kinds of products or records you're interested in to see what kinds of data they have and in what fields.

For instance, there are a good number of cosmetics products in the drug product labeling API:

https://api.fda.gov/drug/label | Docs at https://open.fda.gov/drug/label/reference/

These products tend to list ingredients in the active_ingredient and inactive_ingredient fields. In this API, these fields contain ingredients as reported to FDA by the product manufacturer. I don't know if the manufacturers use INCI standard terms when describing ingredients.

Here's a search that may be of relevance:


In this case, the API returns ~90 product labels where the inactive_ingredient field contains ALL of those words, in any order, in any combination.

I did a quick search and didn't find the word nitrophenol in any records in that endpoint. https://api.fda.gov/drug/label.json?search=inactive_ingredient:(nitrophenol)

With respect to using UNII, you should know that the product labeling endpoint in particular only provides UNII codes for active ingredients, not inactive ingredients.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.