---
title: "Price distribution for a slice"
method: GET
path: "/v1/market"
tags: ["Catalogue"]
---

# Price distribution for a slice

`GET /v1/market`

## Request

- Base URL: `https://api.placementapi.com`
- URL: `https://api.placementapi.com/v1/market`
- Auth: HTTP bearer

What a slice of the market costs, as buyer prices in credits: one price per DOMAIN (the cheapest way to buy it here), so a domain carried by several suppliers counts once. Live, priced, non-delisted named inventory only.

## Query parameters

- `placement_type` 'guest_post' | 'niche_edit' | 'link_insert' | 'homepage_link' | 'media_placement'
- `inventory_mode` 'named' | 'pre_approval' | 'blind': The most important field. 'named' = a specific, identified domain you can inspect before ordering. 'pre_approval' = the vendor proposes candidate domains and the buyer approves them BEFORE placement. 'blind' = a promise (e.g. DR50+, finance) where the domain is assigned at fulfilment with no veto. Only 'named' carries a site_id. Never present a pre_approval or blind offer as though a specific site were secured, and never price-compare a specification against a named domain as the same product.
- `dr_min` number
- `dr_max` number
- `topic` string

## Response `200`

OK

- object
  - `filters` object
  - `count` integer: Distinct domains behind the distribution.
  - `offers_considered` integer
  - `truncated` boolean
  - `currency` 'USD'
  - `unit` string
  - `p25` integer
  - `median` integer
  - `p75` integer
  - `min` integer
  - `max` integer
  - `note` string

## Other responses

- `400`: Malformed request. `error` is `bad_request` (with a zod `detail`), `invalid_json`, or `unknown_parameter` / `unknown_field` (with `unknown[]` and `accepted[]`).
- `401`: Missing, malformed or revoked Bearer credential: `{ error: "unauthorized" }`.
- `404`: `no_inventory`: no live inventory matches that slice.
- `429`: Rate limited. 1,000 requests and 20,000 returned rows per key per hour, a monthly row entitlement that grows with credits purchased, and a maximum offset of 10,000. Carries `Retry-After` and `X-RateLimit-*` / `X-Quota-Rows-*` headers.
- `503`: `server_misconfigured` when the store is not configured; `upstream_unfunded` when the measurement provider's prepaid balance is exhausted (fresh profiles, gap maps and SERPs pause; cached results and catalogue are unaffected); `upstream_unavailable` on a provider error; `payments_unavailable` when card payments are not configured.

---

[API](https://skmtc.dev/placementapi/apis/placement-api.md) · [All operations](https://skmtc.dev/placementapi/apis/placement-api/llms.txt) · [OpenAPI document](https://skmtc.dev/placementapi/apis/placement-api/revisions/fc4e7866eaf7?raw)
