Developers

Build with the Macfax API.

Everything an agent or app needs to help someone buy or sell a used Mac: serial lookup, sale and asking price statistics per exact configuration, quality-gated live listings with deep links, single-listing trust checks, verified reports, and standing alerts. Free, JSON, no account. Anonymous calls work; a free key raises the limits.

Machine-readable contract: /api/v1/openapi.json · agent index: /llms.txt

Quickstart

# What's a used 14" MacBook Pro M3 Pro going for?
curl 'https://macfax.com/api/v1/price-stats?config=macbook-pro-14-m3pro-2023'

# Live listings under $1,500, cheapest first
curl 'https://macfax.com/api/v1/listings?config=macbook-pro-14-m3pro-2023&max_price_usd=1500&sort=price_asc'

# Is this eBay listing trustworthy?
curl 'https://macfax.com/api/v1/check-listing?url=https://www.ebay.com/itm/1234567890'

# 10x the limits, one request, no email
curl -X POST 'https://macfax.com/api/v1/keys'

Every response is { data, meta }. The meta block carries as_of, attribution, and a docs link. Send a key as Authorization: Bearer, X-Api-Key, or ?api_key=.

The endpoints

EndpointWhat it answers
GET /api/v1/lookup?serial=…Serial to model and year for any Mac, including 2021+ randomized serials. Also cross-references verified Macfax reports. Lookup identifies; a report proves.
GET /api/v1/price-stats?config=…The sale estimate for a configuration, labeled by basis (verified direct sales vs calibrated from asks), plus the asking band as seller guidance: median/p25/p75 with sample size, per-channel medians and net-to-seller after fees.
GET /api/v1/listings?config=…Live listings across eBay, Craigslist, OfferUp, Swappa, Facebook and Reddit, scam/junk/stale-filtered, each with a deep link to the source.
GET /api/v1/check-listing?url=…One listing's trust picture: known, still live, flags, ask vs the typical band, the platform's own seller reputation where it exists (eBay, Swappa), verified report attached. Human twin at /listing-check.
GET /api/v1/reports/{id}A verified Macfax report as JSON. Also served at /r/{id}.json.
GET /api/v1/configs/{config}A config page as data: band, inventory, freshest listings, demand signal. Also served at /shop/{config}.json.
GET /api/v1/briefs/{month}A monthly market brief's full data as CSV (aggregates only). Also served at /market/{month}.csv.
POST /api/v1/alertsA standing watch: daily email when new matching listings appear. Human-confirmed before anything sends.
POST /api/v1/keysMint a free API key in one request. No email, no account; limits rise about 10x.
GET /api/v1/creditsThis key's resolution credits, what is billable, and the price list. Read it before a large batch.

Rate limits

Published so nobody has to probe for them. Anonymous limits are per IP; a free key multiplies them. Over-limit calls get an honest 429 with Retry-After and X-RateLimit-* headers, plus a shared per-endpoint daily breaker so a runaway integration degrades one tool for a day rather than everything.

ToolAnonymousWith free keyShared daily cap
lookup10/min · 200/day100/min · 2000/day50,000/day
price-stats30/min · 1000/day300/min · 10000/day50,000/day
listings20/min · 500/day200/min · 5000/day20,000/day
check-listing20/min · 500/day200/min · 5000/day20,000/day
reports30/min · 1000/day300/min · 10000/day50,000/day
configs20/min · 500/day200/min · 5000/day20,000/day
briefs30/min · 500/day300/min · 5000/day20,000/day
alerts5/min · 20/day10/min · 40/day25/day
keys2/min · 5/day2/min · 5/day200/day
credits20/min · 500/day200/min · 5000/day20,000/day

Need more for an operational use, or interested in market history? Email support@macfax.com.

Resolution credits

Serial resolution is the one metered operation, because it is the one that costs something upstream. A credit is spent only on a novel resolution: a 2021+ (10 character) serial we have never resolved before and that your key has not asked about in the last 24 hours. Everything else is free at every tier, including serials already in the cache, pre-2021 serials, repeats within 24 hours, and every endpoint above other than lookup.

Anonymous callers get 5 novel resolutions a day, the same as the web lookup. A free key gets 25. Credits remove the daily cap, are prepaid, and do not expire. Every lookup response carries an X-Credits-Remaining header and a billing block saying whether it cost anything.

PackResolutionsPriceEach
api_250250$52.0¢
api_1k1,000$151.5¢
api_5k5,000$601.2¢

Self-serve purchase is not open yet, so credits are issued by hand. Email api@macfax.com with your key prefix and rough monthly volume and we will set them up, usually the same day.

MCP server

The same six tools, served over the Model Context Protocol at https://macfax.com/mcp (streamable HTTP, no auth, stateless). Registry name com.macfax/macfax; rate limits are identical to the HTTP API above. Open-source wrapper and install manifests: github.com/macfax/macfax-mcp.

  • Claude. Settings → Connectors → add custom connector → https://macfax.com/mcp
  • Gemini (Spark). Settings and help → Connected apps → add a custom app → https://macfax.com/mcp
  • ChatGPT. Settings → Developer mode → add the endpoint while the directory listing is in review.
  • Everything else. Cursor, VS Code, Gemini CLI and friends: install links and a stdio wrapper live in the macfax-mcp repo.

Machine surfaces

  • /api/v1/openapi.json · the full contract, stable URL.
  • /mcp · the MCP endpoint (streamable HTTP).
  • /shop/{config}.json · every config page has a JSON twin.
  • /r/{id}.json · every report has a JSON twin.
  • /market/{YYYY-MM}.csv · every monthly market brief ships its data as CSV.
  • /llms.txt · the curated index of everything above.

Monthly market statistics live at /market. Questions, higher limits, or something you wish existed: support@macfax.com.