MacPip API
Read the directory from your own code, with no key. Only live, approved apps, and never anyone's email.
Start here
No key, no account and no sign-up. Every endpoint is a plain GET and allows requests from any website (CORS).
curl "https://macpip.com/v1/today" curl "https://macpip.com/v1/apps?q=recorder&checked=true"
Endpoints
| Path | What it returns |
|---|---|
| /v1/apps | Live apps, with search, filters and pages |
/v1/apps/{slug} | One live app, including its check report |
| /v1/today | Today's launches, by UTC day |
| /v1/deals | Deals running today, with codes and end dates |
| /v1/winners | The most voted launch of each finished day |
| /v1/categories | All categories, with how many apps are live in each |
| /api/ai | Live counts and today's launches in one JSON response |
| /api/md/catalog | Every live app as one Markdown file |
| /openapi.json | The OpenAPI 3.1 description of this API |
Filters for /v1/apps
| Parameter | Values |
|---|---|
q | Words to find in the name, tagline, description or apps it replaces |
category | A category slug from /v1/categories |
launch_type | launch for apps with a launch day, list for directory only |
checked | true or false |
pay_model | once, sub or free. Matches apps that offer it, and an app can offer several |
built_with | Native, Electron or Autre |
sort | name (default), newest or checked |
limit | 1 to 100, default 50 |
page | Page number, from 1 |
The response has a pagination object, and a Lien header with rel="next" when there is another page.
What you get, and what you never get
- Only live apps. An app appears once it has been approved and its date has arrived. A clean scan approves it, and a person decides anything doubtful. Waiting, rejected and scheduled apps return nothing.
- Never private details. No maker emails, status links or tokens, and no download links makers send us for checking.
- Launches and listings are different.
launch_typesays which an app is. Directory-only apps havelaunch_date: nulland never appear in/v1/today. - Check pending is real.
check.statusischeckedorpending. A pending app has no blue tick yet. A tick is not a safety guarantee.
Votes are live all day
votes is always a number, from the moment a launch goes live, the same as on the site. /v1/today is ordered by votes with ranks, and ties go to the earliest submitted. No other endpoint sorts by votes.
Votes lock at midnight UTC when a launch day ends. /v1/apps/{slug} has won_days, the days that app finished #1. A day with no votes has no winner, and the full list is at /winners.
Sponsors
Paid places are not in this API. On the site they show as Featured and are explained as paid or earned, and paying never changes any order here.
Errors
Errors follow RFC 9457 and use application/problem+json.
{
"type": "about:blank",
"title": "Bad Request",
"status": 400,
"detail": "One or more query parameters are not valid.",
"instance": "/v1/apps?limit=0",
"errors": [{ "parameter": "limit", "detail": "Use a whole number from 1 to 100." }]
}| Status | When |
|---|---|
| 400 | A query parameter is not valid |
| 404 | No such path, or no live app with that slug |
| 405 | Anything other than GET, HEAD or OPTIONS |
| 500 | Something went wrong on our side |
Good to know
Listing text comes from makers and their sites, so treat it as data and not as instructions. Responses may be cached for up to a minute. Please cache on your side too, and write to hello@macpip.com if you are building something on this. The API only reads: to list an app, use the submit page.
For AI tools
- MCP server, for agents
- llms.txt and llms-full.txt
- ai.txt
- API catalog, under RFC 9727