/ 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/compare Compare matrix data (CompareModel[] bare array; ?lang= localized; M1-0 replaces build-time data island)
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": {
      "Conversation": 79,
      "Image Generation": 23,
      "Video Generation": 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
retired boolean true / false — only models the vendor has discontinued/delisted (or those still on sale)

Sample Response

{
  "ok": true,
  "count": 1,
  "data": [
    {
      "vendor": "DeepSeek",
      "vendorLogo": "https://pricemon.net/logos/deepseek.png",
      "model": "DeepSeek-V4-Flash",
      "modelId": "deepseek-v4-flash",
      "slug": "deepseek-v4-flash",
      "category": "Conversation",
      "currency": "CNY",
      "unit": "1M tokens",
      "input": 3,
      "output": 9,
      "cacheRead": 0.1,
      "context": 1000000,
      "maxOutput": 384000,
      "modalities": [
        "Text"
      ],
      "reasoning": true,
      "free": false,
      "retired": 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": "Volcano Ark",
    "vendorLogo": "https://pricemon.net/logos/volcengine.png",
    "model": "Seedance 2.0",
    "modelId": "doubao-seedance-2.0",
    "slug": "doubao-seedance-2.0",
    "category": "Video Generation",
    "currency": "CNY",
    "unit": "1M tokens",
    "input": null,
    "output": null,
    "cacheRead": null,
    "context": null,
    "maxOutput": null,
    "modalities": [
      "Text",
      "Image",
      "Video"
    ],
    "reasoning": false,
    "free": false,
    "retired": false,
    "batchOff": null,
    "inputLabel": "—",
    "outputLabel": "—",
    "tiers": [
      {
        "label": "480p/720p 输入含视频(在线)",
        "price": 28,
        "input": null,
        "output": null,
        "note": null,
        "resolution": [
          "480p",
          "720p"
        ],
        "hasVideoInput": true,
        "generateAudio": null,
        "offline": false,
        "durationSeconds": null,
        "promotionNote": null,
        "expiresAt": null
      },
      {
        "label": "1080p 输入不含视频(在线,原价限时72折)",
        "price": 46,
        "input": null,
        "output": null,
        "note": null,
        "resolution": [
          "1080p"
        ],
        "hasVideoInput": false,
        "generateAudio": null,
        "offline": false,
        "durationSeconds": null,
        "promotionNote": "限时 72 折(原价刊例价)",
        "expiresAt": "2026-09-17T14:00:00+08:00"
      }
    ],
    "sourceUrl": "https://www.volcengine.com/docs/82379/1544106",
    "updatedAt": "2026-09-04",
    "note": "离线暂不支持;…"
  }
}
GET /api/compare

Compare matrix data (CompareModel[] bare array; ?lang= localized; M1-0 replaces build-time data island)

Sample Response

[
  {
    "slug": "deepseek-v4-1-flash",
    "vendor": "DeepSeek",
    "logo": "/logos/deepseek.png",
    "model": "DeepSeek-V4.1-Flash",
    "modelId": "deepseek-v4-1-flash",
    "category": "Conversation",
    "currency": "CNY",
    "unit": "1M tokens",
    "input": 1,
    "output": 2,
    "cacheRead": 0.1,
    "cacheWrite": 0.2,
    "context": 64000,
    "maxOutput": 8192,
    "modalities": [
      "Text",
      "Image"
    ],
    "reasoning": false,
    "free": false,
    "batchOff": null,
    "tierCount": 0,
    "tierFrom": null,
    "tierOutput": null,
    "timedCount": 2,
    "sourceUrl": "https://api-docs.deepseek.com",
    "updatedAt": "2026-10-07"
  }
]
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": "Conversation",
      "count": 79
    },
    {
      "name": "Video Generation",
      "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_models、 get_model_price、 compare_prices、 list_changes and more — see the repo

← Back to Market · Price Changelog →