# outoutbid.lol

A directory of pay-to-rank boards. It indexes sites where a position on a list is bought rather than
earned, verifies each one automatically, and publishes the result as open data.

Everything published here is free to read: no key, no sign-up, no account
system, cross-origin, licensed CC BY 4.0 — free to use commercially with a link
back to https://outoutbid.lol.

## What you can do here

| Do this | Call this |
| --- | --- |
| Read the whole directory | `GET https://outoutbid.lol/api/directory.json?pageSize=500` |
| Search or reorder it | same, with `q`, `category`, `sort` |
| Watch for new boards | `GET https://outoutbid.lol/feed.xml` (RSS) |
| Read this site's own numbers | `GET https://outoutbid.lol/api/stats` |
| Submit a board for listing | `POST https://outoutbid.lol/api/submit` |
| Follow what became of a submission | `GET https://outoutbid.lol/api/submissions/{slug}` |

Full machine description: [`https://outoutbid.lol/openapi.json`](https://outoutbid.lol/openapi.json).
Field-by-field prose: [`https://outoutbid.lol/api`](https://outoutbid.lol/api).

## Reading the numbers correctly

This matters more than the schema does.

- **Money is what each board claims, not audited revenue.** Every figure is
  that board's own published total, read off its page and reproduced verbatim
  in its own currency. A board that inflates its counter is reported at its
  inflated figure.
- **A leading `~` marks a floor** summed from the rows the board's page shows,
  rather than the board's own counter.
- **`null` means not measured, never zero.** A board whose page cannot be read
  carries null and is left out of every total. Summing nulls as zeros would
  report boards as having taken nothing when nobody has checked, so
  directory-wide sums are floors.
- **The census is a floor too** — every board that has been found, not every
  board that exists.
- **Totals are cumulative.** Most of these boards let a bid stand forever, so a
  total only goes up and says nothing about whether anyone is bidding now.

## Rate limits and caching

The published endpoints are cached five minutes at the edge and served under a
generous burst quota, reported in `ratelimit-policy` and `ratelimit` response
headers. Submissions are capped at five an hour per address. There is no reason
to poll faster than the cache.

## What is free and what is not

Listing in the directory is free and **placement cannot be bought**, in any
category or any order. The one thing sold on this site is a leaderboard of its
own on the front page, described at [`https://outoutbid.lol/pricing.md`](https://outoutbid.lol/pricing.md)
and [`https://outoutbid.lol/rules`](https://outoutbid.lol/rules). It has no effect on the directory.

## Errors

Every published endpoint answers a failure with RFC 9457
`application/problem+json`: `type`, `title`, `status`, `detail`, `instance`.
Branch on `status` and `title`; `detail` is prose for a human.

## Also here

- [`https://outoutbid.lol/llms.txt`](https://outoutbid.lol/llms.txt) — the site map, for a model.
- [`https://outoutbid.lol/research`](https://outoutbid.lol/research) — the dated clone census with its
  arithmetic, recomputed on every request.
- [`https://outoutbid.lol/.well-known/api-catalog`](https://outoutbid.lol/.well-known/api-catalog) — RFC 9727 linkset.
- [`https://outoutbid.lol/privacy`](https://outoutbid.lol/privacy) — what is stored about a visit.
- [`https://outoutbid.lol/contact`](https://outoutbid.lol/contact) — how to correct or remove a listing.

## Crawling

Everything except `/api/` internals and the `/go/` click redirector is open to
every crawler, AI crawlers included; being read by them is the point of the
research page. See [`https://outoutbid.lol/robots.txt`](https://outoutbid.lol/robots.txt).
