Medicare Reimbursement by HCPCS & Locality — CMS
Pricing
from $33.50 / 1,000 procedure reimbursement records
Medicare Reimbursement by HCPCS & Locality — CMS
Medicare PSPS reimbursement by HCPCS procedure, specialty and locality — submitted, allowed, denied and paid amounts for pricing, contracting and denial analysis.
Pricing
from $33.50 / 1,000 procedure reimbursement records
Rating
0.0
(0)
Developer
NexGen Signal
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 hours ago
Last modified
Categories
Share
Official source. No API key. Pay per record.
Who this is for and the decision it supports
Healthcare revenue-cycle, payer-strategy, medical-billing and health-economics teams benchmarking Medicare reimbursement for a procedure across specialties and localities.
One record answers: for this HCPCS procedure, what did Medicare allow and pay in a given specialty x carrier x locality x place-of-service — the benchmark for pricing, contracting and denial analysis.
Sample output

Real rows from a live run of this actor (first 5 rows, selected columns).
One full record from the same run, exactly as delivered:
{"hcpcs_code": "99213","hcpcs_initial_modifier": "25","specialty_code": "29","carrier_number": "10312","pricing_locality_code": "35","type_of_service_code": "1","place_of_service_code": "11","hcpcs_second_modifier": "GW","submitted_service_count": null,"submitted_charge_amount": null,"allowed_charge_amount": null,"denied_services_count": null,"denied_charge_amount": null,"assigned_services_count": null,"nch_payment_amount": 193.77,"asc_indicator": "N","error_indicator": "0","betos_code": "M1B","record_id": "99213:29:10312:35:1:11:25:GW","source": "U.S. CMS (Centers for Medicare & Medicaid Services)","source_dataset": "164fc736-4179-4100-9f79-592b69e41975","licence": "U.S. CMS (Centers for Medicare & Medicaid Services). Public-domain U.S. Government work (17 U.S.C. 105). Reproduced verbatim; no third-party content. Aggregate procedure-summary rows only - no provider, NPI, or beneficiary data.","attribution": "U.S. Centers for Medicare & Medicaid Services (CMS)","caveat": "Aggregate Medicare procedure summary (PSPS): HCPCS x specialty code x carrier x pricing locality x place-of-service, with submitted/allowed/denied service counts and charge/payment amounts. No provider name, NPI, or beneficiary data - specialty_code is a specialty code, not a provider. '*'-suppressed cells are delivered as null.","observed_at": "2026-09-25T17:18:50Z"}
What one record is
Each record is one PSPS aggregate row: HCPCS code and modifiers, specialty, carrier, pricing locality, place/type of service, and the submitted/allowed/denied/paid amounts and service counts.
Your first run
Paste this input and run it:
{"hcpcsCode": "99213","maxRecords": 10}
Enter one HCPCS code and get every specialty/locality reimbursement row for it. Here is a real record from that exact input:
{"hcpcs_code": "99213","hcpcs_initial_modifier": "25","specialty_code": "29","carrier_number": "10312","pricing_locality_code": "35","type_of_service_code": "1","place_of_service_code": "11","hcpcs_second_modifier": "GW","submitted_service_count": null,"submitted_charge_amount": null,"allowed_charge_amount": null,"denied_services_count": null}
What the sample costs: $0.05 per record. The sample above delivers 10 records, so it costs at most $0.50.
Pulling in bulk
Raise Maximum records to pull the full locality/specialty breakdown, then repeat per HCPCS code to build a procedure benchmark. A buyer pulls every locality/specialty row for a set of procedure codes to build a national reimbursement benchmark table.
To expand from the sample: raise Maximum records, and widen any filters shown in the input. You are billed only for records actually delivered, so a sample stays cheap and a full pull is predictable.
When to run it again
CMS publishes PSPS as an annual calendar-year file; re-run when the new year's file is released to extend your benchmark.
Update schedule: Annual — CMS releases one PSPS file per calendar year. Verified live: the actor returns PSPS aggregate rows with the calendar-year grain stated in each record's caveat.
How this is different
Medicare PSPS reimbursement aggregates keyed by HCPCS x specialty x locality — distinct from fee-schedule list prices; these are actual submitted/allowed/paid summaries.
Limitations (source coverage vs product coverage)
- The dataset is pulled ONE HCPCS code at a time (14.4M rows total), so hcpcsCode is required.
- These are aggregate Medicare PSPS summaries, not patient-level or commercial-payer data.
- Annual grain: the newest data is the most recent published calendar year, not live claims.
FAQ
Is this commercial insurance?
No. It is Medicare Part B PSPS aggregates.
Why must I pick a HCPCS code?
The full dataset is 14.4M rows; pulling per code keeps a run affordable and fast.
What does an empty run mean?
No PSPS rows exist for that HCPCS code in the published file — check the code.
How much does it cost? You pay $0.05 per procedure reimbursement record delivered to your dataset (less on higher Apify plans). Set the record limit in the input to cap what a run can cost. Records that are not delivered are never charged.
How do I get the data out? Every run saves its records to an Apify dataset. You can download it as JSON, CSV, Excel, XML or HTML from the run page, or read it through the Apify API.
Can I run it on a schedule? Yes. Use Apify Schedules to run it daily, weekly or monthly, with the same input each time.
Can I call it from my own code? Yes. Call nexgensignal/cms-procedure-reimbursement-records through the Apify API or the Apify Python and JavaScript clients, pass the same JSON input as the form, and read the dataset when the run finishes.
What happens if the source is down? The run ends with a clear status message, and nothing is charged for records that were not delivered.
Input fields
Every input this actor accepts, read from its input schema:
| Field | Type | Default | Description |
|---|---|---|---|
hcpcsCode (required) | string | "99213" | The dataset has 14.4M rows, so it is pulled one HCPCS procedure code at a time. Enter a HCPCS/CPT code (e.g. 99213 office visit, 99233 hospital care). |
maxRecords | integer | 500 | Maximum records delivered and billed. You are billed only for records delivered. |
Output fields
Every field in each delivered record, read from its output schema:
| Field | Type | Meaning |
|---|---|---|
record_id | string | Composite source-native key. |
hcpcs_code | string | HCPCS/CPT procedure code. |
hcpcs_initial_modifier | string | hcpcs_initial_modifier, verbatim from CMS. |
specialty_code | string | Provider specialty code (a code, not a provider). |
carrier_number | string | Medicare carrier number. |
pricing_locality_code | string | Pricing locality code. |
type_of_service_code | string | Type-of-service code. |
place_of_service_code | string | Place-of-service code. |
hcpcs_second_modifier | string | hcpcs_second_modifier, verbatim from CMS. |
submitted_service_count | number | Submitted service count. |
submitted_charge_amount | number | Submitted charge amount (USD). |
allowed_charge_amount | number | Allowed charge amount (USD). |
denied_services_count | number | denied_services_count, verbatim from CMS. |
denied_charge_amount | number | denied_charge_amount, verbatim from CMS. |
assigned_services_count | number | assigned_services_count, verbatim from CMS. |
nch_payment_amount | number | NCH payment amount (USD). |
asc_indicator | string | asc_indicator, verbatim from CMS. |
error_indicator | string | error_indicator, verbatim from CMS. |
betos_code | string | BETOS classification code. |
source | string | Data source. |
source_dataset | string | CMS dataset UUID. |
licence | string | Licence / public-domain notice. |
attribution | string | Attribution string. |
caveat | string | Interpretation caveat. |
observed_at | string | UTC timestamp the record was retrieved. |
Related actors
- co-medicine-price-records — Colombia medicine price benchmarks
- company-data-enrichment-api — resolve providers/payers to legal entities
- eu-regulatory-change-records — regulatory monitoring
Source, licence and how it is built
Source and licence are carried on every record (source, licence, attribution, observed_at). The actor reads only the official public endpoint, honours the source's robots and licence terms, and emits values unmodified with full provenance. Records are keyed on a stable id so re-runs upsert cleanly into a table you keep. Row delivery and billing are exactly equal: you are charged once per record delivered (push-then-charge), so an empty run costs nothing.
Part of NexGen Signal — official-source data products.