Stock footage keywords: scientific names checked against WoRMS
How to keyword wildlife and underwater stock footage: start from your own title, check every Latin name against WoRMS, and fall back rather than guess.
A species name in your keywords is a factual claim. A buyer who searches Esox lucius expects a northern pike, and anyone who knows fish can check it in seconds. We treat every Latin name we publish as something that has to be verified first. When it cannot be, we publish less rather than guess.
This is how to keyword wildlife and underwater footage so that the names hold up, with the answers the registries actually give.
Start from your title, not from the picture
If you shoot underwater, you already know what is in frame. Your title names the species, the behaviour and the setting. That title is the best source of truth any keywording tool will ever get.
Image recognition is not. Published benchmarks put frontier vision models at roughly 15 to 20 % top-1 accuracy on open-set fish species, and at 3.5 % when the wrong answers on offer are congeners, species of the same genus. That is exactly the reef case: Chaetodon, Amphiprion, Acanthurus.
So a vision model is useful as a second opinion on what a title cannot say: shot type, camera movement, composition, lighting, mood, a rough count of subjects. If what it sees contradicts your title, that is a flag for you to look at. It is never a reason to overwrite your words.
If you run frames through a vision model, strip the file name and any earlier caption from the request. Models treat a file name as a prompt and will describe what it says rather than what is in frame.
Check every binomial against WoRMS
WoRMS, the World Register of Marine Species, is the register we check against. Despite the name, it holds freshwater and brackish taxa too. Lake species such as Esox lucius, Sander lucioperca and Silurus glanis all resolve, verified on 2026-09-03.
The lookup is one request:
https://www.marinespecies.org/rest/AphiaRecordsByName/{name}?like=false&marine_only=false
Two settings matter. Pass marine_only=false, or freshwater species drop out. And do not filter on the isMarine flag: those three lake species all return isMarine: 0 and isFreshwater: 1. Treat the habitat flags as keyword hints, and expect any of them to be null (it is for Myriophyllum spicatum).
| WoRMS answers | Meaning | What to publish |
|---|---|---|
HTTP 200, status accepted | A real, current name | The name |
| HTTP 200, not accepted | A real name with a current valid one | The returned valid_name: Manta birostris becomes Mobula birostris |
| HTTP 204 | No record for that name | Nothing. Esox luciuss (a typo) and Sander fictus (invented) both return 204 |
| HTTP 5xx, or no answer | No verdict at all | Treat the name as unvalidated. Do not ask a more lenient source instead |
The same first response carries kingdom, phylum, class, order and family. Your family and order keywords need no second lookup, and they come from the same authority as the name.
GBIF only for what WoRMS does not hold
A bird on the shoreline is not in WoRMS. For taxa like that, GBIF's name matching is a reasonable fallback, with one hard rule: accept only matchType: EXACT.
Measured on 2026-09-03, GBIF answered the typo Esox luciuss with FUZZY at confidence 93, and quietly returned a real species. It answered the invented Sander fictus with HIGHERRANK at confidence 94. A high confidence number on a fuzzy or higher-rank match is not a species-level answer.
Two more rules keep the fallback honest:
- GBIF never overrides WoRMS. If WoRMS answered 204, the name is out, whatever GBIF says.
- An outage is not a verdict. If WoRMS is down, the name is unvalidated. Asking the more lenient register instead is how a typo gets published.
When a name fails: genus, family, then a plain noun
Unvalidated does not mean empty. Step down one level at a time:
- The genus, if it validates (Esox).
- If not, the family.
- If not, a plain common noun: pike, fish, turtle.
Each step is less precise and still true. A keyword list with "pike" and no Latin at all is honest. A list with a misspelt binomial tells anyone who checks that nothing was checked.
Build the list in order, and stop early
Our working budget is about 25 to 40 keywords, not the 49 or 50 some marketplaces allow. Padding a list to the limit with guesses is what gets submissions rejected.
Order the list from what the clip is most about to what it is least about. Here is the order for a clip titled "Northern pike staring at camera before hiding in vegetation":
| Slot | Example keywords |
|---|---|
| Subject | northern pike, pike |
| Validated binomial | Esox lucius |
| Family, order | as WoRMS returns them |
| Habitat | freshwater, underwater, aquatic vegetation |
| Behaviour, composition | staring at camera, hiding, close up |
| Concept, mood | predator, camouflage |
| Geography | only what your own title or notes say |
Two rules apply to the whole list:
- Never repeat a stem.
fishandfishes, orhideandhiding, spend two slots on one idea. - Order counts where it is kept. Adobe Stock and Pond5 kept our keyword order on live contributor accounts (read on 2026-09-07 and 2026-09-11). Shutterstock stores video keywords in alphabetical order (2026-09-11), so there only the set counts.
The cleaner below removes duplicates and repeated stems from a list you paste, and shows the first ten.
Publish in English
Everything a marketplace shows should be in English, because that is the language buyers search in. A contributor we work with writes titles in French. Before we caught it, 12 of the 34 clips of one lot went out with their French titles, up to 189 characters of French on Pond5 and Getty.
The fix is a rendering, not a rewrite: the title put into English with nothing added and nothing dropped, proper nouns as written. The rendered title then goes through the same taxonomy check as everything else, because a translation must not change the species.
What this looks like in Rushlot
Rushlot drafts keywords from your own title and uses the frames only as a second opinion. Every Latin name goes through the WoRMS check above, with GBIF exact matches only for taxa WoRMS does not hold. A name that fails falls back to genus, family or a plain noun, and a corrected name is shown to you struck through beside its replacement, before you approve the clip. Nothing is uploaded until you have reviewed it.
Frequently asked questions
Yes, when the name is right. A binomial is a precise search term for buyers who know the species. Check it against a taxonomic register first, and if it does not validate, use the genus, the family or a plain common noun instead.
Yes, despite its name. Esox lucius, Sander lucioperca and Silurus glanis all resolve. Query with marine_only=false, and do not filter on the isMarine flag: those species return isMarine 0 and isFreshwater 1.
That no record matches the name. We measured it on a typo (Esox luciuss) and on an invented species (Sander fictus). Treat a 204 as a rejection and drop the name.
As a fallback for taxa WoRMS does not hold, such as a shoreline bird, and only when GBIF returns matchType EXACT. GBIF answered our typo with FUZZY and our invented name with HIGHERRANK, both at confidence above 90.
Our working budget is about 25 to 40, not the full 49 or 50 a marketplace allows. Order them subject, validated binomial, family and order, habitat, behaviour and composition, concept and mood, then geography, with no repeated stems.
Sources
- WoRMS REST web service, AphiaRecordsByName
- GBIF species API reference (name matching)
- WoRMS and GBIF answers for real, misspelt and invented names, measured on 2026-09-03 when the taxonomy check was built
- Published benchmarks of frontier vision models on open-set fish species identification (about 15 to 20 % top-1; 3.5 % against congeners)
- Keyword order read back on live contributor accounts: Adobe Stock on 2026-09-07, Pond5 and Shutterstock on 2026-09-11
- French titles published as written on one lot of a contributor account we work with (12 of 34 clips), found on 2026-09-18



