Medicare Reimbursement by HCPCS & Locality — CMS avatar

Medicare Reimbursement by HCPCS & Locality — CMS

Pricing

from $33.50 / 1,000 procedure reimbursement records

Go to Apify Store
Medicare Reimbursement by HCPCS & Locality — CMS

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

NexGen Signal

Maintained by Community

Actor 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

Sample output — Medicare Reimbursement by HCPCS & Locality — CMS

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:

FieldTypeDefaultDescription
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).
maxRecordsinteger500Maximum records delivered and billed. You are billed only for records delivered.

Output fields

Every field in each delivered record, read from its output schema:

FieldTypeMeaning
record_idstringComposite source-native key.
hcpcs_codestringHCPCS/CPT procedure code.
hcpcs_initial_modifierstringhcpcs_initial_modifier, verbatim from CMS.
specialty_codestringProvider specialty code (a code, not a provider).
carrier_numberstringMedicare carrier number.
pricing_locality_codestringPricing locality code.
type_of_service_codestringType-of-service code.
place_of_service_codestringPlace-of-service code.
hcpcs_second_modifierstringhcpcs_second_modifier, verbatim from CMS.
submitted_service_countnumberSubmitted service count.
submitted_charge_amountnumberSubmitted charge amount (USD).
allowed_charge_amountnumberAllowed charge amount (USD).
denied_services_countnumberdenied_services_count, verbatim from CMS.
denied_charge_amountnumberdenied_charge_amount, verbatim from CMS.
assigned_services_countnumberassigned_services_count, verbatim from CMS.
nch_payment_amountnumberNCH payment amount (USD).
asc_indicatorstringasc_indicator, verbatim from CMS.
error_indicatorstringerror_indicator, verbatim from CMS.
betos_codestringBETOS classification code.
sourcestringData source.
source_datasetstringCMS dataset UUID.
licencestringLicence / public-domain notice.
attributionstringAttribution string.
caveatstringInterpretation caveat.
observed_atstringUTC timestamp the record was retrieved.
  • 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.