Fee Schedules API¶
Complete API reference for querying Medicare fee schedule data programmatically.
Overview¶
The Fee Schedules API provides read-only access to Medicare fee schedule pricing data across multiple schedule types. All endpoints require authentication and support flexible filtering, pagination, and temporal queries.
Base Path: /api/v1/fee-schedules
Authentication: Required for all endpoints (Bearer token)
Schedule Types¶
The following schedule types are available:
| ID | Name | Description |
|---|---|---|
| 0 | Physician Fee Schedule (PFS) | Professional services, procedures, and office visits |
| 1 | Clinical Lab Fee Schedule (CLFS) | Laboratory tests and diagnostic procedures |
| 2 | Reserved | Reserved for future use |
| 3 | Durable Medical Equipment (DME) | Medical equipment and supplies |
| 4 | Ambulance Fee Schedule | Emergency and non-emergency transport |
| 5 | ASP Pricing Files | Average Sales Price drug pricing |
Endpoints¶
Search Fee Schedules¶
Search and filter fee schedule records with pagination.
Endpoint: GET /fee-schedules/search
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
code |
string | No | Filter by HCPCS/CPT code (case-insensitive prefix match) |
schedule_type |
integer | No | Filter by schedule type (0-5, see table above) |
active_on |
integer | No | Filter records active on date (YYYYMMDD format) |
start_date_from |
integer | No | Filter records starting on or after date (YYYYMMDD) |
start_date_to |
integer | No | Filter records starting on or before date (YYYYMMDD) |
has_modifiers |
boolean | No | Filter by modifier presence (true=has modifiers, false=base only) |
modifier |
string | No | Filter by specific modifier code (e.g., "TC", "26") |
price_indicator |
string | No | Filter by CMS price indicator ('1'=QP, '9'=Standard, 'all'=both). Defaults to standard. |
skip |
integer | No | Number of records to skip (default: 0) |
limit |
integer | No | Maximum records to return (default: 50, max: 500) |
Response:
{
"data": [
{
"id": 123456,
"code": "99213",
"schedule_type": 0,
"start_date": 20250101,
"end_date": 20251231,
"modifiers": null,
"price_indicator": "9",
"data": { /* schedule-specific fields */ },
"created_at": "2025-01-01T00:00:00Z",
"updated_at": "2025-01-01T00:00:00Z"
}
],
"count": 1523
}
Example Requests:
# Search for code 99213 (office visit)
curl -H "Authorization: API_KEY..." \
"https://api.example.com/api/v1/fee-schedules/search?code=99213"
# Get all PFS codes active on January 1, 2025
curl -H "Authorization: API_KEY..." \
"https://api.example.com/api/v1/fee-schedules/search?schedule_type=0&start_date_from=20250101&limit=100"
# Find Qualifyng APM Participant (QP) rates for codes starting with 99
curl -H "Authorization: API_KEY..." \
"https://api.example.com/api/v1/fee-schedules/search?code=99&price_indicator=1"
Use Cases:
- Code lookup: Search by code prefix to find specific procedures
- Date-based queries: Find pricing active on specific dates
- Modifier analysis: Compare base vs modified pricing
- Bulk export: Paginate through all records for data warehousing
Calculate PFS Rate¶
Calculate geographically-adjusted Physician Fee Schedule (PFS) rates in a single API call.
Endpoint: GET /fee-schedules/pfs/calculate
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
npi |
string | Yes | Provider NPI for geographic lookup |
code |
string | Yes | HCPCS/CPT code |
date |
integer | No | Service date (YYYYMMDD format). Defaults to today. |
Response:
{
"npi": "1234567890",
"code": "99213",
"code_description": "Office o/p est low 20 min",
"service_date": 20260315,
"rates": {
"facility_rate": 57.47,
"non_facility_rate": 95.18,
"components": {
"rvu_work": 1.30,
"rvu_mp": 0.09,
"full_fac_pe": 0.33,
"full_nfac_pe": 1.46,
"conv_fact": 33.4009,
"gpci_work": 1.035,
"gpci_pe": 1.094,
"gpci_mp": 0.723
}
},
"locality_info": {
"locality": "0110102",
"loc_description": "Manhattan, NY",
"mac": "05102",
"mac_description": "National Government Services",
"year": 2026,
"zip_code": "10001"
},
"fee_schedule_id": 163503
}
Example Request:
curl -H "Authorization: API_KEY..." \
"https://api.example.com/api/v1/fee-schedules/pfs/calculate?npi=1234567890&code=99213&date=20260315"
Use Cases:
- EHR Integration: Build patient estimators by surfacing expected reimbursement.
- Contract Modeling: Estimate allowable amounts interactively.
- Provider Transparency: Give providers a clear geographic breakdown of their rates.
Get Schedule Types¶
Retrieve list of available schedule types.
Endpoint: GET /fee-schedules/schedule-types
Response:
[
{ "id": 0, "name": "Physician Fee Schedule" },
{ "id": 1, "name": "Clinical Lab Fee Schedule" },
{ "id": 3, "name": "Durable Medical Equipment Fee Schedule" },
{ "id": 4, "name": "Ambulance Fee Schedule" },
{ "id": 5, "name": "ASP Pricing Files" }
]
Example Request:
Use Cases:
- Dynamic UI generation: Populate dropdowns with available schedule types
- Validation: Verify schedule type IDs before making queries
Get Fee Schedule Statistics¶
Get aggregate statistics about the fee schedule database.
Endpoint: GET /fee-schedules/stats
Response:
{
"total_records": 2847563,
"by_schedule_type": {
"Physician Fee Schedule": 1250000,
"Clinical Lab Fee Schedule": 450000,
"Ambulatory Surgical Center Fee Schedule": 320000,
"Durable Medical Equipment Fee Schedule": 280000,
"Ambulance Fee Schedule": 125000,
"ASP Pricing Files": 422563
},
"date_range": {
"earliest": 20150101,
"latest": 20251231
},
"unique_codes": 18453
}
Example Request:
Use Cases:
- Data coverage validation: Verify available date ranges
- System monitoring: Track database growth over time
- Analytics: Understand distribution across schedule types
Get Code Timeline¶
Retrieve all temporal versions of a specific code.
Endpoint: GET /fee-schedules/code/{code}/timeline
Path Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
code |
string | Yes | HCPCS/CPT code (case-insensitive) |
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
schedule_type |
integer | No | Schedule type (default: 0) |
modifier |
string | No | Filter to specific modifier combination |
Response:
[
{
"id": 123456,
"start_date": 20250101,
"end_date": 20251231,
"label": "20250101 - 20251231",
"is_active": true
},
{
"id": 123455,
"start_date": 20240101,
"end_date": 20241231,
"label": "20240101 - 20241231",
"is_active": false
}
]
Example Requests:
# Get timeline for code 99213
curl -H "Authorization: API_KEY..." \
"https://api.example.com/api/v1/fee-schedules/code/99213/timeline"
# Get timeline for code with modifier TC
curl -H "Authorization: API_KEY..." \
"https://api.example.com/api/v1/fee-schedules/code/71010/timeline?modifier=TC"
# Get timeline for Clinical Lab code
curl -H "Authorization: API_KEY..." \
"https://api.example.com/api/v1/fee-schedules/code/80053/timeline?schedule_type=1"
Use Cases:
- Price history analysis: Track how pricing changed over time
- Date range selection: Populate UI with available date ranges
- Trend identification: Identify pricing patterns and adjustments
Get Code Modifiers¶
Retrieve all modifier combinations available for a specific code.
Endpoint: GET /fee-schedules/code/{code}/modifiers
Path Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
code |
string | Yes | HCPCS/CPT code (case-insensitive) |
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
schedule_type |
integer | No | Schedule type (default: 0) |
active_on |
integer | No | Filter to modifiers active on date (YYYYMMDD) |
Response:
[
{
"modifiers": null,
"display": "Base",
"record_count": 3,
"latest_start_date": 20250101
},
{
"modifiers": ["TC"],
"display": "TC",
"record_count": 3,
"latest_start_date": 20250101
},
{
"modifiers": ["26"],
"display": "26",
"record_count": 3,
"latest_start_date": 20250101
}
]
Example Requests:
# Get all modifiers for code 71010
curl -H "Authorization: API_KEY..." \
"https://api.example.com/api/v1/fee-schedules/code/71010/modifiers"
Use Cases:
- Related code discovery: Find all variations of a base code
- Modifier validation: Verify which modifiers are billable
- UI navigation: Show available modifier options to users
Get Single Fee Schedule Record¶
Retrieve a specific fee schedule record by ID.
Endpoint: GET /fee-schedules/{record_id}
Path Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
record_id |
integer | Yes | Unique record ID |
Response:
{
"id": 123456,
"code": "99213",
"schedule_type": 0,
"start_date": 20250101,
"end_date": 20251231,
"modifiers": null,
"price_indicator": "9",
"data": { /* schedule-specific fields */ },
"created_at": "2025-01-01T00:00:00Z",
"updated_at": "2025-01-01T00:00:00Z"
}
Example Request:
Use Cases:
- Direct record lookup: Retrieve specific record by ID
- Bookmark/share: Enable deep linking to specific records
Common Patterns¶
Date Format¶
All dates use YYYYMMDD integer format:
- January 1, 2025 = 20250101
- December 31, 2025 = 20251231
Modifier Handling¶
- Base pricing:
modifiers = nullorhas_modifiers = false - Modified pricing:
modifiers = ["TC"]ormodifier = "TC" - Multiple modifiers:
modifiers = ["TC", "26"](array of strings)
Pagination Strategy¶
For large result sets:
# Example: Export all PFS records
skip = 0
limit = 500
all_records = []
while True:
response = requests.get(
"https://api.example.com/api/v1/fee-schedules/search",
params={
"schedule_type": 0,
"skip": skip,
"limit": limit
},
headers={"Authorization": f"{api_key}"}
)
data = response.json()
all_records.extend(data["data"])
if skip + limit >= data["count"]:
break
skip += limit
Error Handling¶
| Status Code | Description |
|---|---|
| 200 | Success |
| 400 | Invalid parameters (e.g., invalid schedule_type) |
| 401 | Unauthorized (missing/invalid token) |
| 404 | Record not found (for single record endpoint) |
| 500 | Server error |
Rate Limiting¶
API requests are subject to rate limiting:
- Limit: 100 requests per minute per user
- Headers: Check X-RateLimit-Remaining and X-RateLimit-Reset response headers
Support¶
For API support, authentication issues, or bulk data access: - Examples: See API Examples - Support Contact support@bedrockbilling.com
Related Resources¶
- Fee Schedules Viewer Guide - UI documentation
- Authentication Guide - API token setup
- Data Models Reference - Complete field definitions