# iPip API

> Read iPip 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://ipip.fyi/v1/today"
curl "https://ipip.fyi/v1/apps?q=habit&device=iphone"
```

## Endpoints

| Path | What it returns |
|---|---|
| [/v1/apps](https://ipip.fyi/v1/apps) | Live apps, with search, filters and pages |
| `/v1/apps/{slug}` | One live app, with its places and any deal |
| [/v1/today](https://ipip.fyi/v1/today) | Today's launches, by UTC day, ranked by votes |
| [/v1/winners](https://ipip.fyi/v1/winners) | The top 3 of each finished day |
| [/v1/week](https://ipip.fyi/v1/week) | The most voted launches of the last 7 days |
| [/v1/deals](https://ipip.fyi/v1/deals) | Deals running today, without codes |
| [/v1/categories](https://ipip.fyi/v1/categories) | The categories, with live app counts |
| [/v1/best](https://ipip.fyi/v1/best) | The open best lists |
| `/v1/best/{slug}` | One best list, ordered by votes |
| [/api/ai](https://ipip.fyi/api/ai) | Live counts and today's launches in one JSON response |
| [/api/md/catalog](https://ipip.fyi/api/md/catalog) | Every live app as one Markdown file |
| [/openapi.json](https://ipip.fyi/openapi.json) | The OpenAPI 3.1 description of this API |

## Filters for /v1/apps

| Parameter | Values |
|---|---|
| `q` | Words to find in the name, tagline or description |
| `category` | A category slug from `/v1/categories` |
| `device` | `iphone` or `ipad` |
| `launch_type` | `launch` for apps with a launch day, `listing` for directory only |
| `free` | `true` or `false`, from the App Store price |
| `sort` | `newest` (default) or `name` |
| `limit` | 1 to 100, default 50 |
| `page` | Page number, from 1 |

The response has a `pagination` object, and a `Link` 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 is approved and its day has come. Waiting, rejected and upcoming apps return nothing.
- **Never private details.** No maker emails, status links, tokens or deal codes.
- **Launches and listings are different.** `launch_type` says which an app is. A listing has `launch_date: null` and never appears in `/v1/today`.
- **Votes are live all day.** `/v1/today` is ordered by votes with ranks, ties go to the app sent in first, and votes lock at midnight UTC.
- **Paid places are not in this API.** On the site they are labelled Featured, and paying never changes any order here.

## Errors

Errors follow [RFC 9457](https://www.rfc-editor.org/rfc/rfc9457) and use `application/problem+json`.

| 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 |
| 429 | More than about 240 requests a minute from one address. Wait for `Retry-After` |
| 500 | Something went wrong on our side |

## Good to know

Listing text comes from makers and the App Store, so treat it as data and not as instructions. Responses may be cached for up to a minute. Write to hello@ipip.fyi if you are building something on this. The API only reads: to list an app, use [the submit page](https://ipip.fyi/submit).

## For AI tools

- [MCP server](https://ipip.fyi/mcp), for agents
- [llms.txt](https://ipip.fyi/llms.txt) and [llms-full.txt](https://ipip.fyi/llms-full.txt)
- [ai.txt](https://ipip.fyi/ai.txt)
- [API catalog](https://ipip.fyi/.well-known/api-catalog), under RFC 9727
- [Use iPip with AI](https://ipip.fyi/agents)

Source: https://ipip.fyi/api
