---
title: "List carrier-resolved authority-for-sale records"
method: GET
path: "/v1/mc-sales"
---

# List carrier-resolved authority-for-sale records

`GET /v1/mc-sales`

Paginated collection of every carrier-resolved authority-for-sale record (one row per DOT), same row shape as /v1/carriers/{dot_number}/mc-sales. Built for bulk export and incremental sync: pass updated_after with sort_by=updated_at&sort_order=asc to sync changes since your last pull.

## Query parameters

- `limit` integer
- `page` integer
- `sort_by` 'updated_at' | 'created_at' | 'max_confidence' | 'occurrence_count'
- `sort_order` 'asc' | 'desc'
- `created_after` string, date-time — ISO-8601 — records first seen on/after (date-only "before" values include the whole day)
- `created_before` string, date-time — ISO-8601 — records first seen on/before (date-only "before" values include the whole day)
- `updated_after` string, date-time — ISO-8601 — records changed on/after (date-only "before" values include the whole day)
- `updated_before` string, date-time — ISO-8601 — records changed on/before (date-only "before" values include the whole day)
- `state` string
- `min_confidence` number

## Response `200`

One page of resolved records

- McSalesCollectionResponse
  - `total_results` integer
  - `mc_sales` McSaleRecord[]
    - `dot_number` integer
    - `mc_numbers` string[]
    - `carrier` object
      - `legal_name` string, nullable
      - `dba_name` string, nullable
      - `state` string, nullable
      - `city` string, nullable
      - `phone` string, nullable
      - `email` string, nullable
      - `officers` string[]
    - `summary` object
      - `occurrence_count` integer
      - `avg_confidence` number, nullable — 0-1; treat < 0.4 as weak
      - `max_confidence` number, nullable
    - `listings` McSaleListing[]
      - `seller_name` string, nullable
      - `phone` string, nullable
      - `email` string, nullable
      - `asking_price` string, nullable
      - `authority_age` string, nullable
      - `post_url` string, nullable
      - `source_file` string, nullable
      - `confidence` number, nullable — 0–1 match confidence for this observation
      - `reasoning` string, nullable
      - `post` McSaleListingPost, nullable — Source-post metadata. The whole group is null when the source post is no longer available.
        - `source` 'facebook_group' | 'facebook_page' | 'telegram' | 'mcxchange' | 'bizbuysell'
        - `source_url` string, nullable
        - `source_name` string, nullable
        - `posted_at` string, nullable
        - `engagement` object, nullable
          - `likes` integer
          - `comments` integer
          - `shares` integer
      - `authority` McSaleListingAuthority, nullable — Authority details extracted from the post text — the SELLER’S CLAIMS, not FMCSA records; cross-check against /authority.
        - `type` string, nullable
        - `status` string, nullable
        - `state` string, nullable
        - `mc_number` string, nullable
        - `dot_number` string, nullable
        - `granted_date` string, nullable
        - `granted_date_precision` string, nullable — one of exact | month | year | age — "age" dates are back-computed and ±1 year
        - `reinstated_date` string, nullable
        - `ein_disclosed` boolean
      - `safety` McSaleListingSafety, nullable — Safety stats as claimed in the post text, not FMCSA records.
        - `total_inspections` integer, nullable
        - `total_violations` integer, nullable
        - `total_crashes` integer, nullable
        - `vehicle_oos_pct` number, nullable
        - `driver_oos_pct` number, nullable
        - `vehicle_oos_count` integer, nullable
        - `driver_oos_count` integer, nullable
      - `included_assets` McSaleListingAssets, nullable — What the seller says is included. Booleans are tri-state: null means the post didn’t mention it.
        - `highway_setup` boolean, nullable
        - `amazon_status` string, nullable — Live | Suspended | Not Applicable | null
        - `bank_name` string, nullable
        - `factoring_name` string, nullable
        - `insurer` string, nullable
        - `insurance_limit_k` number, nullable
        - `fleet_size` integer, nullable
        - `email_included` boolean, nullable
        - `phone_included` boolean, nullable
      - `asking_price_usd` number, nullable — Parsed numeric price; the legacy asking_price string is retained for backwards compatibility
      - `sold` boolean, nullable — true once a sold marker is detected on the post; expect lag
    - `first_seen` string, nullable
    - `last_seen` string, nullable
  - `pagination` Pagination
    - `page` integer
    - `limit` integer
    - `total_results` integer
    - `total_pages` integer

## Other responses

- `400` — Invalid parameters
- `401` — Invalid or missing API key
- `429` — Too many requests. Check X-RateLimit-Remaining and Retry-After headers.

---

[API](https://skmtc.net/runalphaloops/apis/alphaloops-fmcsa-carrier-data-api.md) · [All operations](https://skmtc.net/runalphaloops/apis/alphaloops-fmcsa-carrier-data-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/runalphaloops/alphaloops-fmcsa-carrier-data-api/revisions/ae58c064a7af/schema)
