Skip to content

Search & Discovery

These endpoints power package discovery. They are public β€” no authentication required. The search engine uses SQLite FTS5 by default, with an optional Meilisearch backend for larger deployments.

Search Packages

GET /api/search?q=<query>&page=<n>&sort=<field>

Full-text search across package names, descriptions, and README content.

ParameterTypeDefaultDescription
qstring""Search query (supports tag filters, see below)
pageinteger1Page number (1-indexed)
sortstringrelevanceOne of relevance, updated, created, likes

Response: 200 OK

{
"packages": [
{ "package": "http", "score": 0.95 },
{ "package": "http_parser", "score": 0.82 },
{ "package": "dio", "score": 0.71 }
],
"totalCount": 42,
"page": 1,
"pageSize": 20
}

Query Syntax

Plain text is matched across name, description, and README. Filters can be combined in any order:

http client # free-text
sdk:dart # SDK filter
sdk:flutter # SDK filter
platform:android # platform: android|ios|web|linux|macos|windows
is:discontinued # status filter
http sdk:flutter platform:web # combined

List All Packages

GET /api/packages?page=<n>&compact=1

Returns a paginated list of packages without a search query. Pass compact=1 for a reduced payload (names and the latest version only).

Response: 200 OK

{
"packages": [
{
"name": "my_package",
"latest": {
"version": "2.1.0",
"archive_url": "https://club.example.com/api/archives/my_package-2.1.0.tar.gz",
"archive_sha256": "a1b2c3d4...",
"pubspec": { "name": "my_package", "version": "2.1.0" },
"published": "2026-04-01T10:00:00.000Z"
}
}
],
"totalCount": 2,
"page": 1,
"pageSize": 20
}

Package Name Completion

GET /api/package-name-completion-data

Returns an array of every package name on the server, up to a maximum of 10,000 names. Used by the web UI for autocomplete.

{
"packages": [
"crypto",
"dio",
"http",
"http_parser",
"json_annotation",
"shelf"
]
}