ICD-10-CM Lookup Scraper
parseforge/icd10cm-lookup-scraper
AutomationIntegrationsDeveloper tools
Searches the NLM ICD-10-CM Clinical Modification lookup and returns matched codes and full official descriptors as a flat dataset. Drive it by free-text terms and cap the results per run.
- Total users
- 1
- Monthly active
- 0
- Total runs
- 87
- Bookmarked
- 0
- Rating
- Not rated yet
- Last modified
- 9 days ago
Overview
ICD-10-CM Lookup Scraper
Scrape official ICD-10-CM codes from the NLM lookup by any symptom, condition, or code fragment, up to a million per run. Each match returns its exact code, full official description, and rank, so you can build a complete reference dataset without manual searching. Export to CSV, JSON, Excel, or XML.
The ICD-10-CM code set is the foundation of medical billing, epidemiology, and clinical research in the United States, but pulling codes one at a time from the NLM website is slow and error-prone when you need a batch of them. This ICD-10-CM Lookup Scraper reads the public NLM clinical tables directly from your search terms, collects every matched code and its official long name, and hands you a clean flat dataset. No API key, no registration, no coding against a raw HTML table.
| Who uses it | What they scrape NLM ICD-10-CM Lookup for |
|---|---|
| Medical coders and billers | Build a private index of official ICD-10-CM codes for a specialty instead of searching one by one. |
| Health data analysts | Pull a batch of codes by disease or symptom to cross-reference claims or electronic health record data. |
| Healthtech product managers | Populate a dropdown or autocomplete field with the exact NLM descriptors users expect. |
| Clinical researchers | Collect the code set for a condition domain before running a literature or trial review. |
What it does
This Actor searches the NLM ICD-10-CM Clinical Modification lookup for the terms you give it and returns each matched code as a flat row with its exact code and full official descriptor.
- ๐ Free-text search: type symptoms, conditions, diseases, or partial code strings (e.g.
fever,diabetes,E11) as you would in the NLM lookup. - โก Batch collection: raise
maxItemsto collect thousands of codes in one unattended run, up to the NLM page limit. - ๐ Flat row output: every matched code returns as a single row with its code and full official descriptor, ready for a data warehouse or EHR mapping table.
Results export to CSV, JSON, Excel, or XML, or straight from the API.
What you can do with NLM ICD-10-CM Lookup data
๐ Build a specialty code list.
A medical coder searches terms like 'fracture radius' or 'COPD exacerbation' and collects the full official code set for their practice's top diagnoses in one export.
๐งช Map conditions to codes for a research cohort.
A clinical researcher enters a list of condition names and pulls the exact ICD-10-CM codes that match, then joins them to patient records for a retrospective study.
๐ฅ๏ธ Seed a clinical autocomplete.
A healthtech team runs the Actor against a curated set of symptoms and diseases, then loads the resulting codes and descriptors into their application's lookup field.
๐ Audit claims against the official code set.
A health plan analyst pulls all codes in a chapter (e.g., diabetes mellitus E08-E13) and cross-checks that provider claims use valid, billable codes.
Why choose this scraper
| What you get | |
|---|---|
| Exact NLM source | You get the codes directly from the U.S. National Library of Medicine tables, not a third-party index. |
| Full official descriptor | Every row carries the complete long name published by the CDC and CMS, not a truncated label. |
| No manual lookups | One run replaces hundreds of individual browser searches when you are building a code reference. |
| Fixed flat schema | Every run returns the same predictable columns, so your downstream ETL or spreadsheet will not break. |
How it compares
One other Apify actor also scrapes the NLM ICD-10-CM lookup. Here is how they compare based on what each listing describes.
| Feature | ParseForge | ICD-10 Codes Scraper |
|---|---|---|
| Free-text search by symptom or condition | Yes | Yes |
| Full official code descriptor | Yes | Yes |
| Nullable hierarchy fields (parent, chapter) | Not listed | Yes |
| Batch collection up to 1M codes per run | Yes, with maxItems | Not listed |
| No API key or registration required | Yes | Not listed |
Configure the run
Drive the Actor by one or more free-text search terms, and limit how many codes it collects per run with maxItems. The Input tab lists every parameter.
A first run with the defaults:
{
"maxItems": 10,
"terms": "fever"
}
A larger pull:
{
"maxItems": 200,
"terms": "fever"
}
Pricing
Pay-per-result: $0.0085 per result collected. You pay only for the results written to your dataset.
| Results collected | Approximate cost |
|---|---|
| 100 results | $0.85 |
| 1,000 results | $8.50 |
| 10,000 results | $85.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
- Create a free Apify account with $5 in credit.
- Open the ICD-10-CM Lookup Scraper.
- Set your inputs and any filters, then click Start.
- 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 NLM ICD-10-CM Lookup 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/icd10cm-lookup-scraper"
Then prompt it in plain language to run the scraper and read back the results.
Troubleshooting
The run says it succeeded but I got zero results.
Your search term probably did not match any code in the NLM lookup. Try a broader term or a known code fragment like 'fever' or 'E11'. Check that the term is spelled the same way the NLM expects (e.g., 'hypertension' not 'high blood pressure').
I got fewer results than I expected.
The NLM search page only returns codes that match your exact term. It does not do fuzzy matching or expand to synonyms. Try shorter or more general search terms, and confirm that the codes you expect exist in the ICD-10-CM set for the current fiscal year.
The Actor timed out or stopped early.
A very high maxItems combined with a term that yields thousands of matches can hit the run's memory or time limit. Raise the run timeout in the advanced settings, or split the work into multiple runs with narrower search terms.
Some fields are missing or empty in my dataset.
The NLM returns only the fields it has for a given search. If the lookup table does not include a particular attribute for a code, that column will be empty in your output. This is expected behavior and matches the live site.
I entered a valid ICD-10 code but got no match.
Make sure the code is exactly correct, including the period (e.g., 'E11.9'). If the code is out of date or not part of the current fiscal year's ICD-10-CM set, the NLM will not return it. Verify the code on the live NLM lookup first.
FAQ
| Question | Answer |
|---|---|
| Does this scraper return the full ICD-10-CM hierarchy? | No. The NLM clinical lookup returns individual matched codes with their long descriptors and a rank, but it does not expose parent-child chapter or block relationships in a single view. If you need the hierarchy, you would need to source it separately. |
| Can I search by exact code instead of a term? | Yes. Type any ICD-10-CM code or code fragment (e.g., 'E11.9' or 'E11') into the search term field, and the Actor will return the matching official entry from the NLM. |
| What is the maximum number of codes I can get in one run? | You control the ceiling with the maxItems field. The limit you set caps how many matched records the Actor will collect, up to 1,000,000. The actual number you get depends on how many results the NLM returns for your search. |
| Does this cover ICD-10-PCS procedure codes? | No. This Actor targets the ICD-10-CM (Clinical Modification) diagnosis code set. ICD-10-PCS procedure codes come from a different NLM lookup and are not returned by this endpoint. |
| Will I get the same results as the NLM website? | Yes. The Actor reads the same public clinical tables that appear when you search on the NLM ICD-10-CM Lookup page, so the codes and descriptors match exactly. |
| How current are the codes? | The codes reflect whatever the NLM publishes in its ICD-10-CM Clinical Modification tables on the day the Actor runs. Code sets update yearly, and the Actor always reads the live NLM site, so you get the latest data without a scheduled refresh. |
| Can I run searches for multiple terms in one go? | The current input schema accepts one search term per run. To process a list of terms, you can loop the Actor from a scheduler or a parent run, passing one term per execution. |
| Do I need an API key or NLM UMLS account? | No. The Actor reads the public NLM lookup pages directly. No registration, API key, or UMLS license is required. |
| What export formats do you support? | You can download the results in CSV, JSON, Excel, or XML from the Apify dataset tab after the run finishes. |
Related actors
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
| Field | Type | What it does | Default |
|---|---|---|---|
| maxItems | integer | How many codes to collect per run. | 10 |
| terms | string | Free-text search for ICD-10-CM (e.g. fever, diabetes). | fever |
Pricing
from $7.50 per 1,000 results
| Charged for | What it is | Price each |
|---|---|---|
| result | Single result in the default dataset. | $0.0075 to $0.0085 |
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.
curl -X POST "https://api.apify.com/v2/acts/parseforge~icd10cm-lookup-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"helloWorld": 123
}' Examples
Input that runs as-is.
{
"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.
