ParseForge Scrapers

RxNorm Drug Concepts Scraper

parseforge/rxnorm-drug-concepts-scraper

Developer toolsBusinessAutomation

Scrapes RxNorm drug concepts from the NLM by ingredient name, RxCUI, or term type. Returns each related concept as a flat row with its name, RxCUI, term type, and source vocabulary.

Run this scraper See the API call
Total users
1
Monthly active
0
Total runs
119
Bookmarked
0
Rating
Not rated yet
Last modified
12 days ago

Overview

ParseForge

RxNorm Drug Concepts Scraper

Scrape RxNorm drug concepts by name, RxCUI, or term type, up to a million per run. Every concept returns its related ingredients, brand names, dose forms, and NDC codes. No API key or registration. Export to CSV, JSON, Excel, or XML.

The NLM RxNav API requires REST calls, pagination, and careful term-type handling. This Actor reads the public RxNorm drug-concept feeds directly, normalizing every related concept for a single ingredient, RxCUI, or term type into one flat row. It is built for healthcare data engineers and clinical informaticists who need clean, linked drug terminology without writing API glue.

Who uses it What they scrape RxNorm for
Clinical informaticists Mapping local drug formularies to RxNorm concept unique identifiers for EHR integration.
Healthcare data engineers Building a normalized drug terminology warehouse from NLM's RxNorm release.
Pharmacovigilance analysts Linking adverse event drug names to RxNorm ingredients and clinical drugs.
Health IT vendors Populating medication pick-lists with RxNorm brand names, dose forms, and synonyms.

What it does

This Actor collects RxNorm drug concepts by ingredient name, RxCUI, or term type and returns each related concept as a flat row with its name, RxCUI, term type, and source vocabulary.

  • ๐Ÿ” Search by drug name: Enter an ingredient or brand name like "aspirin" or "metformin" and get every related RxNorm concept.
  • ๐Ÿ†” Fetch by RxCUI: Provide a concept unique identifier (e.g., 161 for acetaminophen) and retrieve all linked concepts.
  • ๐Ÿ“‹ Browse by term type: Select a term type (IN, BN, SCD, SBD, etc.) and pull every concept of that type from RxNorm.
  • ๐Ÿ”— Full relationship graph: Each row includes the related concept's name, RxCUI, term type, and source vocabulary.
  • ๐Ÿ“ฆ Bulk export ready: Outputs a flat dataset you can load directly into a data warehouse, EHR, or analytics tool.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

What you can do with RxNorm data

๐Ÿฅ Build an EHR formulary map.

A clinical informaticist searches RxNorm by ingredient name, collects every related brand name and clinical drug, and maps the local hospital formulary to RxNorm CUIs for Meaningful Use reporting.

๐Ÿ“Š Normalize adverse event drug names.

A pharmacovigilance analyst runs the Actor by drug name to resolve free-text medication mentions in FAERS reports to RxNorm ingredients and precise ingredients.

๐Ÿ”— Link NDC codes to RxNorm.

A health IT vendor fetches all concepts for a Semantic Clinical Drug term type, then joins the output with an NDC directory to connect package codes to RxNorm clinical drugs.

๐Ÿงช Populate a research data mart.

A healthcare data engineer browses all concepts of type IN (Ingredient), loads the flat dataset into a star-schema drug dimension, and refreshes it monthly with new RxNorm releases.

Why choose this scraper

What you get
Normalized drug names Every concept row includes the official RxNorm name and its term type
Linked identifiers RxCUI, source vocabulary, and relationship metadata on every row
No API key Reads the public RxNorm feeds directly with no registration or rate-limit headaches
Flat, predictable schema One row per related concept, ready for SQL, pandas, or Excel

How it compares

Three other Apify actors also target RxNorm or FDA drug data. Here is how they compare on the capabilities a drug-informatics workflow needs.

Feature ParseForge NLM RxNorm Drug Concepts Scraper OpenFDA Scraper RxNorm Drug Terminology Scraper
Search by drug name Yes Yes Not listed Yes
Fetch by RxCUI Yes Yes Not listed Yes
Browse all concepts by term type Yes Not listed Not listed Not listed
Returns NDC codes Via source vocabulary Yes Yes Yes
No API key required Yes Not listed Not listed Yes
Flat row per related concept Yes Not listed Not listed Not listed

Configure the run

Drive the Actor from a drug name, an RxCUI, or a term type, and set a maximum item count so only the concepts you need reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

{
  "mode": "search",
  "name": "aspirin",
  "tty": "SBD",
  "maxItems": 10
}

A larger pull:

{
  "mode": "search",
  "name": "aspirin",
  "tty": "SBD",
  "maxItems": 200
}

Pricing

Pay-per-result: $0.0365 per result collected. You pay only for the results written to your dataset.

Results collected Approximate cost
100 results $3.65
1,000 results $36.50
10,000 results $365.00

New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the RxNorm Drug Concepts Scraper.
  3. Set your inputs and any filters, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to RxNorm through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/rxnorm-drug-concepts-scraper"

Then prompt it in plain language to run the scraper and read back the results.

Troubleshooting

Why am I getting no results for my drug name search?

Check the spelling of the drug name. RxNorm search expects the exact ingredient or brand name string. Try the generic name (e.g., "acetaminophen" instead of "Tylenol") or verify the name exists in RxNorm by checking the NLM RxNav site.

The Actor returns fewer concepts than I expected.

RxNorm returns only concepts that are directly related to your input. If you search by ingredient name, you get that ingredient and its brand names, clinical drugs, and dose forms. It does not return unrelated concepts. Also check your "Maximum drug concepts" setting.

I got an error about an invalid RxCUI.

RxCUIs are numeric identifiers. Make sure you entered a valid number without letters or special characters. You can verify an RxCUI on the RxNav website before running the Actor.

The term type I selected returns too many results.

Some term types like IN (Ingredient) or SCD (Semantic Clinical Drug) contain thousands of concepts. Set a reasonable "Maximum drug concepts" limit to cap the output, or switch to a more specific mode like search or byRxcui.

My export file is missing some fields.

The Actor returns a fixed schema for every concept. If a field is empty for a particular concept, that means RxNorm does not have that data for that concept. Check the source vocabulary field to see where the concept originated.

FAQ

Question Answer
Do I need an NLM API key or UMLS license? No. This Actor reads the public RxNorm REST endpoints that do not require authentication. You do not need a UMLS Terminology Services account.
What is an RxCUI? An RxCUI (RxNorm Concept Unique Identifier) is a numeric identifier that uniquely names a drug concept in RxNorm, such as an ingredient, brand name, or clinical drug. For example, RxCUI 161 is acetaminophen.
What term types does RxNorm use? RxNorm uses term types (TTYs) like IN (Ingredient), BN (Brand Name), SCD (Semantic Clinical Drug), SBD (Semantic Branded Drug), and many others. The Actor supports all 16 term types listed in the input schema.
Can I get NDC codes from this Actor? The Actor returns RxNorm concepts and their source vocabularies. Some concepts link to NDC codes through the source vocabulary field, but for a full NDC directory you may want to pair this with an NDC-specific scraper.
How do I search for a brand name like Tylenol? Set the mode to "Search by drug name" and enter "Tylenol" in the Drug Name field. The Actor will return all RxNorm concepts related to that brand name, including its ingredient (acetaminophen) and clinical drug forms.
What is the difference between SCD and SBD? SCD (Semantic Clinical Drug) describes a drug by its ingredient and strength, like "Acetaminophen 500 MG Oral Tablet." SBD (Semantic Branded Drug) adds the brand name, like "Tylenol 500 MG Oral Tablet."
Can I limit how many concepts the Actor returns? Yes. Set the "Maximum drug concepts" field to any number between 1 and 1,000,000. Free Apify users are limited to 10 items for preview.
What output formats are supported? The Actor exports to CSV, JSON, Excel, and XML through the standard Apify dataset export. You can also access the data via the Apify API.
How often is the RxNorm data updated? RxNorm is updated monthly by the National Library of Medicine. This Actor reads the live API, so you always get the current release.
Can I run this for multiple drug names at once? Each run handles one drug name, one RxCUI, or one term type. To process a list, you can call the Actor programmatically via the Apify API in a loop over your drug names.

Related actors

  • openfda-scraper: Use this when you need FDA drug labels, adverse events, or NDC directory data with optional RxNorm lookups layered in.

Browse the full ParseForge collection for more scrapers.

๐Ÿ†˜ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

โš ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by U.S. National Library of Medicine. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

Input

FieldTypeWhat it doesDefault
mode required string (3 options) What to fetch: - search: look up all RxNorm concepts that share an ingredient name - byRxcui: fetch every related concept for a given RxCUI - allByType: browse every concept of a given term type (TTY) search
name string Ingredient or brand name to search (e.g. "aspirin", "metformin"). Only used when mode = search. aspirin
rxcui string An RxNorm Concept Unique Identifier (e.g. 161 = acetaminophen). Only used when mode = byRxcui. not set
tty string (16 options) RxNorm Term Type to browse. Only used when mode = allByType. - IN = Ingredient - PIN = Precise Ingredient - MIN = Multiple Ingredients - BN = Brand Name - SCD = Semantic Clinical Drug - SBD = Semantic Branded Drug - SCDC/SBDC = Drug Component - SCDF/SBDF = Drug Form - GPCK/BPCK = Pack - DF = Dose Form - SY = Synonym - TMSY = Tall-Man Synonym SBD
maxItems integer Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000 10

Pricing

from $27.37 per 1,000 results

Charged forWhat it isPrice each
result Single result in the default dataset. $0.02737 to $0.0365

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

API

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST ยท run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~rxnorm-drug-concepts-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "helloWorld": 123
  }'

Examples

Input that runs as-is.

input.json
{
  "helloWorld": 123
}

Reviews

No reviews yet. Be the first.

Issues

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

Related scrapers

Run RxNorm Drug Concepts Scraper on Apify All scrapers