/ REST API

API Docs.

Programmatic access to Pricemon price data: all endpoints are GET, , returning UTF-8 JSON with no authentication. Responses can be cached for 5–60 minutes (see the Cache-Control header).

base-url

Production (same-origin, shared with the main site)

https://pricemon.net/api/…

Production (API subdomain, /api/* only)

https://api.pricemon.net/api/…

Endpoint Overview

Method Path Description
GET /api/meta Site statistics: total entries, vendor count, category breakdown, latest verification date
GET /api/prices All prices, filterable by vendor / category / q / currency / reasoning / free
GET /api/prices/:slug Single-model detail; slug is the lowercased modelId (e.g. gpt-6-astra)
GET /api/vendors Vendor list (with entry counts and logo paths)
GET /api/categories Category list (with entry counts)
GET /api/changes Price change log (newest first)

Endpoint Details

GET /api/meta

Site statistics: total entries, vendor count, category breakdown, latest verification date

Sample Response

{
  "ok": true,
  "data": {
    "total": 146,
    "vendors": 17,
    "categories": 7,
    "byCategory": {
      "对话": 79,
      "图像生成": 23,
      "视频生成": 27
    },
    "updatedAt": "2026-09-04"
  }
}
GET /api/prices

All prices, filterable by vendor / category / q / currency / reasoning / free

Query Parameters

Parameter Type Description
vendor string Exact vendor filter, e.g. OpenAI, DeepSeek
category string Category filter: chat / image / video / TTS / speech recognition / music / 3D
q string Keyword search across vendor / model name / modelId
currency string Currency filter: CNY or USD
reasoning boolean true / false — only models that support (or do not support) deep thinking
free boolean true / false — only free (or non-free) models

Sample Response

{
  "ok": true,
  "count": 1,
  "data": [
    {
      "vendor": "DeepSeek",
      "model": "DeepSeek-V4-Flash",
      "modelId": "deepseek-v4-flash",
      "slug": "deepseek-v4-flash",
      "category": "对话",
      "currency": "CNY",
      "unit": "百万 tokens",
      "input": 3,
      "output": 9,
      "cacheRead": 0.1,
      "context": 1000000,
      "maxOutput": 384000,
      "modalities": [
        "文本"
      ],
      "reasoning": true,
      "free": false,
      "batchOff": null,
      "tiers": null,
      "inputLabel": "¥3",
      "outputLabel": "¥9",
      "sourceUrl": "https://api-docs.deepseek.com/zh-cn/quick_start/pricing",
      "updatedAt": "2026-09-04",
      "note": "默认思考模式;空闲时段输入输出半价"
    }
  ]
}
GET /api/prices/:slug

Single-model detail; slug is the lowercased modelId (e.g. gpt-6-astra)

Sample Response

{
  "ok": true,
  "data": {
    "vendor": "OpenAI",
    "model": "GPT-6 Astra",
    "modelId": "gpt-6-astra",
    "slug": "gpt-6-astra",
    "category": "对话",
    "currency": "USD",
    "unit": "百万 tokens",
    "input": 10,
    "output": 50,
    "cacheRead": 1,
    "context": 1050000,
    "modalities": [
      "文本",
      "图像"
    ],
    "reasoning": true,
    "inputLabel": "$10",
    "outputLabel": "$50",
    "tiers": [
      {
        "label": "短上下文(输入≤272K)",
        "price": null,
        "input": 10,
        "output": 50,
        "note": "缓存输入 $1.00;cache writes $12.50"
      }
    ]
  }
}
GET /api/vendors

Vendor list (with entry counts and logo paths)

Sample Response

{
  "ok": true,
  "count": 17,
  "data": [
    {
      "name": "DeepSeek",
      "count": 2,
      "logo": "/logos/deepseek.png"
    },
    {
      "name": "OpenAI",
      "count": 29,
      "logo": "/logos/openai.png"
    }
  ]
}
GET /api/categories

Category list (with entry counts)

Sample Response

{
  "ok": true,
  "count": 7,
  "data": [
    {
      "name": "对话",
      "count": 79
    },
    {
      "name": "视频生成",
      "count": 27
    }
  ]
}
GET /api/changes

Price change log (newest first)

Sample Response

{
  "ok": true,
  "count": 1,
  "data": [
    {
      "date": "2026-09-04",
      "title": "建站首轮全量核对(28 个模型 / 10 家厂商)",
      "tag": "基线",
      "items": [
        "DeepSeek 官方文档直采:V4-Flash 输入 3 / 输出 9(高峰,空闲半价)"
      ]
    }
  ]
}
rate-limit

Rate Limits

Each client is limited by default to at most 50 requests per minute (60-second sliding window), counted independently along two dimensions; exceeding either one is rejected:

  • IP bucket — the client IP (behind Cloudflare, take CF-Connecting-IP; otherwise the socket address / XFF)
  • Request-fingerprint bucket — a hash of IP + User-Agent + Accept-Language + Accept + Sec-CH-UA; changing UA or headers cannot bypass the IP limit

On limit, the API returns 429 Too Many Requests, with a Retry-After(seconds) and a X-RateLimit-* header; normal responses also carry X-RateLimit-Limit / Remaining / Reset,— use these for client-side backoff.

429 响应示例

HTTP/1.1 429 Too Many Requests
Retry-After: 37
X-RateLimit-Limit: 50
X-RateLimit-Remaining: 0

{
  "ok": false,
  "error": "rate limit exceeded: max 50 requests / 60s (per IP and request fingerprint), retry later"
}
errors

Error Conventions

Failure responses are always { ok: false, error: "message" }, with an appropriate HTTP status code:

404 model not found: xxx(slug not found)

429 rate limit exceeded: …(rate limited)

500 internal server error

mcp

MCP Server (for Agents)

To feed data into Claude / Cursor and other agents, connect directly via MCP: https://mcp.pricemon.net/mcp (Streamable HTTP). Tools include search_modelsget_model_pricecompare_priceslist_changes and more — see the repo README

← Back to Market · Price Changelog →