trace.moe API
Free reverse image search for anime with no API key. Send a screenshot URL and trace.moe returns the series, episode and exact timestamp, with a video preview. Live example.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the trace.moe API?
trace.moe is a free reverse image search API for anime. Give it a screenshot — by URL or as an uploaded image — and it returns the matching series as an AniList id, the episode number, the exact timestamp within that episode, and preview video and image clips of the matched scene.
What makes trace.moe unusual is the precision of its answer. Most reverse image search returns a ranked list of pages; this returns a position in time — `at: 279.78` seconds into episode 1 — because the index is built from frames rather than from whole images. The `frameCount` field in every response tells you how large that index currently is, and it runs into the billions of frames.
Two things about the result array catch people out. First, matches are duplicated: the same scene indexed from a Blu-ray rip, a BS11 broadcast rip and an AT-X rip returns as three separate results with near-identical similarity, so dedupe on `anilist` plus `episode` before displaying. Second, `similarity` is a 0-to-1 float and low scores are not weak matches — they are wrong matches. The project's own guidance is to discard anything below roughly 0.9 rather than showing it as a best guess.
Quick facts
- Base URL
https://api.trace.moe- Authentication
- No key required. An optional key raises the search quota; without one you are metered per IP address.
- Rate limit
- The captured response advertised 100 requests per minute in `ratelimit-policy: 100;w=60`, alongside a search quota reported in the body as `quota` and `quotaUsed`. Call `/me` to read your current allowance.
- Pricing
- Free at the anonymous tier. Paid tiers raise the quota and priority.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the trace.moe API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Identify an anime scene from a screenshot URL
GET https://api.trace.moe/search?url=https%3A%2F%2Fimages.plurk.com%2F32B15UXxymfSMwKGTObY5e.jpg
curl 'https://api.trace.moe/search?url=https%3A%2F%2Fimages.plurk.com%2F32B15UXxymfSMwKGTObY5e.jpg'const res = await fetch("https://api.trace.moe/search?url=https%3A%2F%2Fimages.plurk.com%2F32B15UXxymfSMwKGTObY5e.jpg");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://api.trace.moe/search?url=https%3A%2F%2Fimages.plurk.com%2F32B15UXxymfSMwKGTObY5e.jpg", timeout=20)
res.raise_for_status()
print(res.json()){
"quota": 100,
"quotaUsed": 1,
"frameCount": 1722433326,
"error": "",
"result": [
{
"anilist": 21034,
"filename": "Gochuumon wa Usagi Desuka 2 - 01 (BD 1280x720 x264 AAC).mp4",
"episode": 1,
"episode_start": 1,
"episode_end": 1,
"from": 272.1886,
"at": 279.7795,
"to": 282.6574,
"duration": 1418.0834,
"similarity": 0.9922267343483719,
"video": "https://api.trace.moe/video/4IU9u8xXei4KkFqxRn1pUI3",
"image": "https://api.trace.moe/image/4IU9u8xXei4KkFqxRn1pUI3"
},
{
"anilist": 21034,
"filename": "Gochuumon wa Usagi Desuka 2 - 01 (BS11 1280x720 x264 AAC).mp4",
"episode": 1,
"episode_start": 1,
"episode_end": 1,
"from": 282.282,
"at": 289.8312,
"to": 292.7925,
"duration": 1440.022,
"similarity": 0.9922267343483719,
"video": "https://api.trace.moe/video/msyOY3kYwQBtszq40yVbie",
"image": "https://api.trace.moe/image/msyOY3kYwQBtszq40yVbie"
},
{
"anilist": 21034,
"filename": "[Ohys-Raws] Gochuumon wa Usagi Desuka 2 - 01 (AT-X 1280x720 x264 AAC).mp4",
"episode": 1,
"episode_start": 1,
"episode_end": 1,
"from": 282.3237,
"at": 289.8312,
"to": 292.7508,
"duration": 1440.1887,
"similarity": 0.9922267343483719,
"video": "https://api.trace.moe/video/BQQG2r4ZEqPgGIn1akptG8e",
"image": "https://api.trace.moe/image/BQQG2r4ZEqPgGIn1akptG8e"
},
{
"anilist": 21034,
"filename": "[Leopard-Raws] Gochuumon wa Usagi Desu ka 2nd - 01 RAWParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
url | query | Optional | URL-encoded link to the image to search. The alternative is POSTing the image bytes directly. https%3A%2F%2Fexample.com%2Fshot.jpg |
anilistInfo | query | Optional | Present-as-flag. Expands each result with the AniList title and metadata instead of just an id. anilistInfo |
cutBorders | query | Optional | Present-as-flag. Crops black bars before searching, which markedly improves matches on letterboxed screenshots. cutBorders |
anilist | query | Optional | Restrict the search to one AniList series id. 21034 |
Response fields
errorstring- Empty string on success — not null. Test it with a truthiness check, not against null.
frameCountinteger- Total frames currently indexed across the whole corpus. Informational, but a useful health signal.
quota / quotaUsedinteger- Your search allowance and how much of it this request consumed against your IP or key.
result[].anilistinteger- AniList series id. Without `anilistInfo` this is all you get — resolve the title yourself or ask for the expansion.
result[].similarityfloat- Confidence from 0 to 1. Below about 0.9 should be treated as no match rather than a weak one.
result[].from / at / tofloat- Start, best-match and end offsets in seconds within the source file, as floats.
result[].filenamestring- The indexed release filename. This is why near-duplicate results appear — one entry per source release.
result[].video / imagestring- Ready-made preview URLs for a short clip and a still of the matched moment.
What you can build with the trace.moe API
- Answer 'what anime is this screenshot from' in a Discord bot
- Auto-tag a screenshot archive with series and episode
- Build a browser extension that identifies a frame from a right-click
- Verify that fan art or a thumbnail actually comes from the series it claims
- Link a shared screenshot straight to the moment it came from
Common errors and how to fix them
400
No image supplied, or a `url` that trace.moe could not fetch.
Fix: URL-encode the `url` parameter fully, and make sure the image is publicly reachable without a referer check.
402 / quota exhausted
You have used your search allowance for the period.
Fix: Read `quota` and `quotaUsed` from `/me` before searching in bulk, and cache results by image hash so the same screenshot is never searched twice.
429
Requests arriving faster than the per-minute policy allows.
Fix: Respect `ratelimit-reset` and queue searches; concurrency is limited to one request at the anonymous tier.
A confident-looking result with low similarity
The index returned its nearest neighbour, which may be nothing like your image.
Fix: Threshold on `similarity` — discard below roughly 0.9 and tell the user nothing was found.
trace.moe API — frequently asked questions
Does trace.moe need an API key?
No. Anonymous searches work with no key at all, metered by IP address. A key is only needed to raise the search quota and concurrency, and the response body reports your current `quota` and `quotaUsed` either way.
How accurate is trace.moe?
Very accurate when the frame is genuinely in the index, and confidently wrong when it is not — it always returns its nearest neighbour. Use the `similarity` score as a gate: below roughly 0.9, treat it as no match.
Why do I get several results for the same episode?
Because the index holds one entry per source release. A Blu-ray rip, a broadcast rip and a fansub of the same episode are three separate indexed files, so the same scene matches all three. Dedupe on `anilist` and `episode`.
How do I get the anime title rather than just an id?
Add the `anilistInfo` flag to the query. Without it, each result carries only an AniList series id, which you would otherwise have to resolve through the AniList API yourself.
Tools that pair with this API
Image to Base64 Converter
Convert an image to a Base64 data URL online. Get copy-ready HTML img tags and CSS background-image snippets. Free, instant and fully private.
URL Encoder
Percent-encode text for URLs instantly. Switch between encodeURIComponent and encodeURI modes, see live output and copy the result. Free URL encoder.
Image Metadata Viewer
View image metadata and EXIF data online: camera make, model, date taken, ISO, exposure, GPS location, dimensions and file size — all private.
trace.moe is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.