Build with the Macfax API.
Everything an agent or app needs to help someone buy or sell a used Mac: serial lookup, 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 number to model, config and year. Lookup identifies; a report proves. |
| GET /api/v1/price-stats?config=… | Median, p25 and p75 asking price for a configuration, 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, verified report attached. |
| 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. |
| 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. |
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 | 2,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 |
| alerts | 5/min · 20/day | 10/min · 40/day | 500/day |
| keys | 2/min · 5/day | 2/min · 5/day | 200/day |
Need more for an operational use, or interested in market history? Email support@macfax.com.
The rules
- Asking, not sold. Every price Macfax serves is an asking price from a live listing. The API says so in-band (price_basis: "asking"); keep the distinction when you relay numbers.
- Cite and deep-link. Attribute results to Macfax with the html_url in the payload, and keep each listing's deep link to the source marketplace. The transaction belongs where the listing lives; Macfax is the trust and routing layer.
- Alerts need consent. Create an alert only for a user who asked for that alert on that email. The first alert for a new email activates only when its owner clicks the confirmation link; nothing sends before that, and every alert email carries manage and unsubscribe links. Per-email creation is capped at 5/day.
- Tasks, not dumps. There is no bulk export, no exhaustive pagination, and no raw-row feed at any tier. Result and page-depth caps are deliberate; if you need the whole market, you need a different conversation (see above).
Machine surfaces
- /api/v1/openapi.json · the full contract, stable URL.
- /shop/{config}.json · every config page has a JSON twin.
- /r/{id}.json · every report has a JSON twin.
- /llms.txt · the curated index of everything above.
An MCP server exposing these same tools is planned; the API is already shaped for it. Questions, higher limits, or something you wish existed: support@macfax.com.