Coverage Data API¶
Complete API reference for querying CMS Medicare Coverage data including NCDs, LCDs, and Articles.
Overview¶
The Coverage Data API provides access to Medicare Coverage policy documents:
- NCDs - National Coverage Determinations (CMS-wide policies)
- LCDs - Local Coverage Determinations (regional MAC policies)
- Articles - Billing & Coding guidance documents
Base Path: /api/v1/coverage
Authentication: Required for all endpoints (Bearer token or API Key)
NCD Endpoints¶
Search NCDs¶
Search National Coverage Determinations with filtering and pagination.
Endpoint: GET /coverage/ncd/search
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
keyword |
string | No | Search in section number and title |
skip |
integer | No | Records to skip (default: 0) |
limit |
integer | No | Max records to return (default: 50, max: 500) |
Response:
{
"items": [
{
"ncd_id": 250,
"ncd_version": 2,
"ncd_manual_section": "20.9.1",
"ncd_manual_section_title": "Ambulance Services",
"ncd_effective_date": "2005-01-01",
"publication_code": 1
}
],
"total": 450
}
Example Request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://api.example.com/api/v1/coverage/ncd/search?keyword=ambulance"
Get NCD Document¶
Retrieve the HTML document for a specific NCD.
Endpoint: GET /coverage/ncd/doc/{id}/{version}/{section}
Path Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
integer | Yes | NCD ID |
version |
integer | Yes | Version number |
section |
string | Yes | NCD manual section (slashes replaced with dashes) |
Response: HTML content of the NCD document
Example Request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://api.example.com/api/v1/coverage/ncd/doc/250/2/20-9-1"
LCD Endpoints¶
Search LCDs¶
Search Local Coverage Determinations with filtering and pagination.
Endpoint: GET /coverage/lcd/search
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
keyword |
string | No | Search in display ID and title |
status |
string | No | Filter by status (Current, Proposed, Retired, Future) |
skip |
integer | No | Records to skip (default: 0) |
limit |
integer | No | Max records to return (default: 50, max: 500) |
Response:
{
"items": [
{
"lcd_id": 35014,
"lcd_version": 3,
"display_id": "L35014",
"title": "Wheelchair Seating",
"status": "Current",
"orig_det_eff_date": "2017-01-01",
"rev_eff_date": "2024-01-15",
"last_updated": "2024-01-10T12:00:00Z"
}
],
"total": 1250
}
Example Requests:
# Search by keyword
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://api.example.com/api/v1/coverage/lcd/search?keyword=wheelchair"
# Filter by status
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://api.example.com/api/v1/coverage/lcd/search?status=Current&limit=100"
Get LCD Document¶
Retrieve the HTML document for a specific LCD.
Endpoint: GET /coverage/lcd/doc/{id}/{version}
Path Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
integer | Yes | LCD ID |
version |
integer | Yes | Version number |
Response: HTML content of the LCD document
Example Request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://api.example.com/api/v1/coverage/lcd/doc/35014/3"
List LCD HCPCS Codes¶
Get HCPCS codes associated with an LCD.
Endpoint: GET /coverage/lcd/{id}/{version}/hcpcs
Response:
{
"lcd_id": 35014,
"lcd_version": 3,
"codes": [
{
"hcpc_code_id": "E1161",
"hcpc_code_version": 1,
"short_description": "Man w/c access folding",
"long_description": "Manual adult size wheelchair..."
}
],
"count": 45
}
Article Endpoints¶
Search Articles¶
Search Billing & Coding Articles with filtering and pagination.
Endpoint: GET /coverage/article/search
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
keyword |
string | No | Search in display ID and title |
status |
string | No | Filter by status |
skip |
integer | No | Records to skip (default: 0) |
limit |
integer | No | Max records to return (default: 50, max: 500) |
Response:
{
"items": [
{
"article_id": 57704,
"article_version": 2,
"article_type": 1,
"display_id": "A57704",
"title": "Billing and Coding: Wheelchair Seating",
"status": "Current",
"article_eff_date": "2024-01-15",
"last_updated": "2024-01-10T12:00:00Z"
}
],
"total": 3500
}
Get Article Document¶
Retrieve the HTML document for a specific Article.
Endpoint: GET /coverage/article/doc/{id}/{version}
Path Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
integer | Yes | Article ID |
version |
integer | Yes | Version number |
Response: HTML content of the Article document
List Article ICD-10 Codes¶
Get ICD-10 diagnosis codes associated with an Article.
Endpoint: GET /coverage/article/{id}/{version}/icd10
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
covered |
boolean | No | If true, return covered codes only. If false, non-covered only. |
Response:
{
"article_id": 57704,
"article_version": 2,
"covered_codes": [
{
"icd10_code_id": "M54.5",
"description": "Low back pain"
}
],
"noncovered_codes": [
{
"icd10_code_id": "Z00.00",
"description": "General adult medical exam"
}
]
}
Common Response Fields¶
LCD Status Values¶
| Status | Description |
|---|---|
Current |
Active policy in effect |
Proposed |
Draft under review |
Future |
Approved, not yet effective |
Retired |
No longer active |
Expired |
Past end date |
Date Formats¶
- Dates returned as ISO 8601 strings:
YYYY-MM-DD - Timestamps include time:
YYYY-MM-DDTHH:MM:SSZ
Error Handling¶
| Status Code | Description |
|---|---|
200 |
Success |
400 |
Invalid parameters |
401 |
Unauthorized (missing/invalid token) |
404 |
Document not found |
500 |
Server error |
Error Response:
Rate Limits¶
- Standard: 100 requests/minute per API key
- Document endpoints: Count as 1 request regardless of document size
- Search endpoints: Pagination recommended for large result sets
Related Resources¶
- Coverage Data Viewer Guide - UI documentation
- Authentication Guide - API token setup
- MUE Data API - Units of service edits