The filesea API
Search the catalogue from your own app or site. Every result is a public link we have checked, with its size, type and when it last worked. Free, with 1,000 requests a day per key.
Getting started
Send your key in the Authorization header. All answers are JSON, and you can call the API from a browser too (CORS is open).
curl -H "Authorization: Bearer fsk_your_key" \
"https://filesea.com/api/v1/search?q=harbor+lights+s02"Search
GET /api/v1/search takes the same filters as the search page:
q: the words to search fortype:video,audio,archive,document,software,android,ebook,image,disk_imagehost: a host code from/api/v1/hostsext,quality(1080p…),size(small,medium,large),sort(new,large,shared),page
You get 20 results a page. When the same file is on several hosts, it comes back once, with the other hosts in also_on.
{
"page": 1, "per_page": 20, "total": 1042,
"results": [{
"id": 4182, "title": "Harbor Lights S02E07",
"filename": "Harbor.Lights.S02E07.1080p.WEB-DL.x265-NVR.mkv",
"host": { "code": "mediafire", "name": "MediaFire" },
"size_bytes": 1299227607, "type": { "code": "video", "name": "Video" },
"details": { "season": 2, "episode": 7, "resolution": "1080p" },
"status": "alive", "checked_at": "2026-10-12T08:14:00.000Z",
"shared_on_pages": 14, "also_on": [],
"page_url": "https://filesea.com/f/harbor-lights-s02e07-38a",
"download_url": "https://filesea.com/go/38a"
}]
}One file
GET /api/v1/files/{id} returns one file, its exact copies on other hosts, and its related_parts (the other parts of a split archive, or the rest of a season).
Hosts
GET /api/v1/hosts lists the hosts we catalogue, with their codes and how many working files each has.
Limits and fair use
- Each response says how much of today’s allowance is left:
X-RateLimit-Remaining. It resets at 00:00 UTC. - Over the limit you get
429withRetry-After. Need more? Write to us. - Link people to
page_urlordownload_url, not straight to the host, and say the results come from filesea. - Don’t resell the data or use it to build a copy of filesea.
Errors
Errors come back as { "error": { "code": "…", "message": "…" } } with the matching status: 400 bad request, 401 missing or wrong key, 403 key switched off, 404 not found, 429 daily limit, 503 API paused.