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
| Endpoint | What 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/alerts | A standing watch: daily email when new matching listings appear. Human-confirmed before anything sends. |
| POST /api/v1/keys | Mint a free API key in one request. No email, no account; limits rise about 10x. |
| GET /api/v1/credits | This 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.
| Tool | Anonymous | With free key | Shared daily cap |
|---|---|---|---|
| lookup | 10/min · 200/day | 100/min · 2000/day | 50,000/day |
| price-stats | 30/min · 1000/day | 300/min · 10000/day | 50,000/day |
| listings | 20/min · 500/day | 200/min · 5000/day | 20,000/day |
| check-listing | 20/min · 500/day | 200/min · 5000/day | 20,000/day |
| reports | 30/min · 1000/day | 300/min · 10000/day | 50,000/day |
| configs | 20/min · 500/day | 200/min · 5000/day | 20,000/day |
| briefs | 30/min · 500/day | 300/min · 5000/day | 20,000/day |
| alerts | 5/min · 20/day | 10/min · 40/day | 25/day |
| keys | 2/min · 5/day | 2/min · 5/day | 200/day |
| credits | 20/min · 500/day | 200/min · 5000/day | 20,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.
| Pack | Resolutions | Price | Each |
|---|---|---|---|
| api_250 | 250 | $5 | 2.0¢ |
| api_1k | 1,000 | $15 | 1.5¢ |
| api_5k | 5,000 | $60 | 1.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.