Lexaloffle APIlexaloffle.com ↗
Access PICO-8 cart listings from the Lexaloffle BBS: titles, authors, tags, likes, cart PNG URLs, and more via 3 structured endpoints.
What is the Lexaloffle API?
This API exposes 3 endpoints for reading PICO-8 cartridge data from the Lexaloffle BBS community catalog. The list_carts endpoint returns paginated listings sorted newest-first, with up to 30 carts per page including fields like title, author, likes, tags, and cart PNG URL. The get_cart_details endpoint delivers per-cart metadata including license type, slug, and direct thread URL. A dedicated collect_new_cart_ids endpoint supports incremental collection by stopping once a previously seen PID is encountered.
curl -X GET 'https://api.parse.bot/scraper/7feda12b-58d0-4529-be4c-8f739b343709/list_carts?page=1&limit=5' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace lexaloffle-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.lexaloffle_pico_8_carts_api import Lexaloffle, CartSummary, Cart
client = Lexaloffle()
# Browse recent PICO-8 carts
for cart in client.cartsummaries.list(limit=5):
print(cart.title, cart.author, cart.likes, cart.date_created)
# Get full details for a specific cart
detail = client.carts.get(pid="188412")
print(detail.title, detail.author, detail.license, detail.thread_url)
# Navigate from summary to detail
summary = client.cartsummary(pid="188412")
full = summary.details()
print(full.title, full.tags, full.date_edited)
# Incremental collection - find new carts since last scrape
for new_cart in client.cartsummaries.collect(known_ids="188399,188392", max_pages=2):
print(new_cart.pid, new_cart.title, new_cart.author, new_cart.thumb_url)
List PICO-8 carts sorted by newest first (date added). Returns up to 30 carts per page with metadata including title, author, tags, dates, likes, cart PNG URL, and thumbnail URL. Pagination via integer page counter.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (1-indexed) |
| limit | integer | Max carts to return per page (max 30) |
{
"type": "object",
"fields": {
"page": "integer, current page number",
"carts": "array of cart objects with pid, tid, title, display_name, author, author_uid, date_created, date_modified, tags, likes, post_count, slug, thumb_url, cart_png_url, has_cc4_license, detail_url",
"carts_on_page": "integer, number of carts returned on this page",
"has_next_page": "boolean, whether more pages are available"
},
"sample": {
"data": {
"page": 1,
"carts": [
{
"pid": "191372",
"tid": 157427,
"slug": "fiwijijose-0",
"tags": [],
"likes": 0,
"title": "fiwijijose",
"author": "Toosmallshoes",
"thumb_url": "https://www.lexaloffle.com/bbs/thumbs/pico8_fiwijijose-0.png",
"author_uid": 140866,
"detail_url": "https://www.lexaloffle.com/bbs/?pid=191372#p",
"post_count": 1,
"cart_png_url": "https://www.lexaloffle.com/bbs/cposts/fi/fiwijijose-0.p8.png",
"date_created": "2026-06-10 21:36:09",
"display_name": "fiwijijose",
"date_modified": "2026-06-10 21:36:09",
"has_cc4_license": true
}
],
"carts_on_page": 5,
"has_next_page": true
},
"status": "success"
}
}About the Lexaloffle API
Cart Listings and Pagination
The list_carts endpoint returns arrays of cart objects sorted by date added, newest first. Each object includes pid, tid, title, author, author_uid, date_created, date_modified, tags, likes, and post_count. The optional page parameter (1-indexed) and limit parameter (max 30) control pagination. The has_next_page boolean and carts_on_page count let you walk the full catalog without guessing when to stop.
Per-Cart Detail
The get_cart_details endpoint accepts a single required pid string and returns expanded metadata for that cart: slug, license (e.g. CC4-BY-NC-SA), detail_url, and thread_url alongside the same title, author, and tag data available in the listing. Note that legacy carts created before 2016 may return empty title fields and numeric slugs rather than descriptive ones — callers should handle both cases.
Incremental Collection
The collect_new_cart_ids endpoint is designed for pipelines that need to stay current without re-fetching the full catalog. Pass a comma-separated list of previously collected PIDs as known_ids. Scanning proceeds newest-first and halts when the first matching PID is found, indicated by stopped_at_known_id: true. The pages_scanned and new_cart_count fields report exactly how much of the catalog was traversed. If no known IDs match within max_pages, all carts encountered are returned.
The Lexaloffle API is a managed, monitored endpoint for lexaloffle.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when lexaloffle.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official lexaloffle.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a PICO-8 game discovery feed sorted by newest releases using
list_cartswith paginated browsing. - Index cart licenses (e.g. CC4-BY-NC-SA) from
get_cart_detailsto filter for openly reusable games. - Track community engagement trends over time by collecting
likesandpost_countacross the cart catalog. - Monitor new cart releases incrementally by passing previously seen PIDs to
collect_new_cart_ids. - Generate a tag-based taxonomy of the PICO-8 catalog using the
tagsarrays fromlist_carts. - Link directly to game threads using the
thread_urlfield returned byget_cart_detailsfor community tooling. - Identify prolific authors by aggregating
author_uidandauthorfields across paginated cart listings.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Lexaloffle provide an official developer API for the BBS cart catalog?+
What does `get_cart_details` return that `list_carts` does not?+
get_cart_details adds license, slug, detail_url, and thread_url — fields not present in the listing response. It requires a specific pid and returns metadata for that single cart only.How should I handle legacy carts with empty title fields?+
title and a numeric value for slug rather than a human-readable name. Your code should treat empty titles as a known edge case rather than an error.Does the API return the cart's playable binary or sprite data?+
cart PNG URL (the cartridge image file used by PICO-8) but does not parse or expose internal cart data such as Lua source code, sprite sheets, or map data. You can fork this API on Parse and revise it to add an endpoint that fetches and parses cart PNG contents.Can I search or filter carts by tag, author, or date range?+
list_carts returns carts newest-first with optional page and limit controls only. You can fork this API on Parse and revise it to add filtered listing endpoints targeting specific tags or authors.