oxfordlearnersdictionaries APIoxfordlearnersdictionaries.com ↗
Look up English words in the Oxford Advanced Learner's Dictionary. Get definitions, CEFR levels, IPA pronunciations with audio, inflections, idioms, and phrasal verbs.
What is the oxfordlearnersdictionaries API?
This API provides 3 endpoints for retrieving structured English dictionary data from the Oxford Advanced Learner's Dictionary. The lookup_word endpoint resolves a search term to a full entry including CEFR level, UK and US IPA pronunciations with audio file links, sense-by-sense definitions, example sentences, idioms, and phrasal verb entries. The suggest_words endpoint returns autocomplete suggestions for a typed prefix.
curl -X GET 'https://api.parse.bot/scraper/c566cafe-c642-4f4e-8d71-fa22a571a4b5/lookup_word?word=child' \ -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 oxfordlearnersdictionaries-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.
"""Walkthrough: Oxford Learner's Dictionaries SDK — look up words, browse senses, and navigate related entries."""
from parse_apis.oxfordlearnersdictionaries_com_api import OxfordDictionary, InputNotFound
client = OxfordDictionary()
# Look up a word and inspect its top-level fields.
entry = client.entries.lookup(word="child")
print(entry.headword, entry.part_of_speech, entry.level)
# Walk senses — each has a definition, CEFR level, and example sentences.
for sense in entry.senses:
print(f" [{sense.cefr}] {sense.definition}")
for ex in sense.examples[:2]:
print(f" e.g. {ex}")
# Pronunciations carry region, IPA, and an audio link.
for pron in entry.pronunciations:
print(f" {pron.region}: {pron.ipa} {pron.audio_mp3}")
# Navigate from a related entry to its full detail via the typed link.
if entry.other_entries:
related = entry.other_entries[0].details()
print(f"Related: {related.headword} ({related.part_of_speech})")
# Autocomplete suggestions for a prefix, capped to 5 items.
for suggestion in client.entries.suggest(query="spir", limit=5):
print(suggestion)
# Typed error handling on a misspelled lookup.
try:
client.entries.lookup(word="recieve")
except InputNotFound:
print("Word not found — check spelling or use suggest() for completions.")
print("exercised: entries.lookup / entries.get (via details) / entries.suggest / InputNotFound")
Looks up a word or phrase in the Oxford Advanced Learner's Dictionary (English) and returns the full entry the dictionary's own search resolves to: headword, part of speech, Oxford 3000/5000 CEFR level, UK and US IPA pronunciations with audio-file links, inflections (plural forms) or verb forms, every sense with its CEFR level, grammar tag, pattern, definition, examples, extra examples, topics and cross-references, idioms with their senses, phrasal-verb links, word origin, and other_entries (other parts of speech and related headwords, each with an entry_id usable with get_entry). One page round trip. Sense objects carry a group heading when the entry groups its senses (e.g. for long verb entries), otherwise group is null; level, labels, grammar, variants, inflections and word_origin are null when the entry does not show them. When the dictionary has no exact match the call returns a not-found error whose message lists the dictionary's 'Did you mean' spelling suggestions.
| Param | Type | Description |
|---|---|---|
| wordrequired | string | Word or phrase to look up, as typed into the dictionary search box (e.g. child). Case-insensitive. |
{
"type": "object",
"fields": {
"url": "public page of the entry",
"level": "Oxford 3000/5000 CEFR level of the headword (A1..C2) or null",
"query": "the word as submitted",
"idioms": "array of {idiom, labels, senses[]} with the same sense shape",
"labels": "usage/register label shown on the headword or null",
"senses": "array of sense objects: sense_id, number, cefr, grammar, labels, usage, pattern, definition, examples, extra_examples, synonyms, topics [{name, cefr}], see_also [{text, entry_id}], group",
"grammar": "grammar tag shown on the headword or null",
"entry_id": "dictionary entry identifier of the resolved entry (e.g. run_1); accepted by get_entry",
"headword": "headword text",
"variants": "alternative spellings/forms text or null",
"verb_forms": "array of {form code, label, text, pronunciations} for verbs; empty for other parts of speech",
"inflections": "inflection text such as plural forms with IPA, or null",
"word_origin": "etymology text or null",
"other_entries": "array of {headword, part_of_speech, entry_id} for other matching entries",
"phrasal_verbs": "array of {text, entry_id} links to phrasal-verb entries",
"part_of_speech": "part of speech label (noun, verb, adjective...)",
"pronunciations": "array of {region: uk|us, ipa, audio_mp3 link} for the headword"
},
"sample": {
"data": {
"url": "https://www.oxfordlearnersdictionaries.com/definition/english/child",
"level": "A1",
"query": "child",
"idioms": [
{
"idiom": "be with child",
"labels": null,
"senses": [
{
"cefr": null,
"usage": null,
"labels": null,
"number": null,
"topics": [
{
"cefr": "C2",
"name": "Life stages"
}
],
"grammar": null,
"pattern": null,
"examples": [
"big with child"
],
"see_also": [],
"sense_id": "child_sng_5",
"synonyms": [],
"definition": "to be pregnant",
"extra_examples": []
}
]
}
],
"labels": null,
"senses": [
{
"cefr": "A1",
"group": null,
"usage": null,
"labels": null,
"number": 1,
"topics": [
{
"cefr": "A1",
"name": "Life stages"
}
],
"grammar": null,
"pattern": null,
"examples": [
"a child of 3/a 3-year-old child",
"men, women and children"
],
"see_also": [
{
"text": "brainchild",
"entry_id": "brainchild"
}
],
"sense_id": "child_sng_1",
"synonyms": [],
"definition": "a young human who is not yet an adult",
"extra_examples": [
"Children grow up so quickly!"
]
}
],
"grammar": null,
"entry_id": "child",
"headword": "child",
"variants": null,
"verb_forms": [],
"inflections": "(plural children /ˈtʃɪldrən/ /ˈtʃɪldrən/ )",
"word_origin": "Old English cild , of Germanic origin.",
"other_entries": [
{
"entry_id": "child-abuse",
"headword": "child abuse",
"part_of_speech": "noun"
}
],
"phrasal_verbs": [],
"part_of_speech": "noun",
"pronunciations": [
{
"ipa": "/tʃaɪld/",
"region": "uk",
"audio_mp3": "https://www.oxfordlearnersdictionaries.com/media/english/uk_pron/c/chi/child/child__gb_2.mp3"
},
{
"ipa": "/tʃaɪld/",
"region": "us",
"audio_mp3": "https://www.oxfordlearnersdictionaries.com/media/english/us_pron/c/chi/child/child__us_1.mp3"
}
]
},
"status": "success"
}
}About the oxfordlearnersdictionaries API
What the API returns
The lookup_word endpoint accepts any English word or phrase via the word parameter (case-insensitive) and returns the resolved dictionary entry. The response includes the headword, entry_id, part-of-speech grammar tag, Oxford 3000/5000 level (A1 through C2 or null), usage labels, and variants for alternative spellings. The senses array is the core of each entry: each sense object carries a sense_id, number, per-sense cefr, definition, examples, extra_examples, synonyms, grammar notes, usage notes, and collocational pattern fields. Idioms are returned as a separate idioms array, each with its own nested senses of the same shape.
Navigating related entries
The lookup_word response also exposes other_entries, phrasal_verbs, and see_also arrays, each element carrying its own entry_id. Pass any of those identifiers to the get_entry endpoint to retrieve those entries directly without a fresh text search. get_entry returns the same payload shape as lookup_word (minus the query field) and additionally includes a verb_forms array for verb entries — each element specifying a form code, label, written text, and pronunciations. This makes it straightforward to traverse a word's entire dictionary neighbourhood programmatically.
Autocomplete and prefix lookup
The suggest_words endpoint takes a query prefix and returns the dictionary's ordered suggestions array of matching headwords and phrases. It is lightweight and returns an empty suggestions array when no matches exist. This is useful for building type-ahead search, validating that a string is a recognised headword before calling lookup_word, or enumerating dictionary entries under a given prefix.
The oxfordlearnersdictionaries API is a managed, monitored endpoint for oxfordlearnersdictionaries.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when oxfordlearnersdictionaries.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 oxfordlearnersdictionaries.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?+
- Annotate text with CEFR difficulty levels using the
leveland per-sensecefrfields fromlookup_word - Build a vocabulary learning app that surfaces UK and US IPA pronunciations with playable audio links
- Generate flashcard decks populated with
definition,examples, andextra_examplesfrom each sense - Power a grammar-checking tool that reads inflected forms from the
verb_formsarray returned byget_entry - Implement type-ahead dictionary search using
suggest_wordswith a typed prefix - Extract idiom entries for a phraseological database using the
idiomsarray with nested sense definitions - Build a readability scorer that maps vocabulary to Oxford 3000/5000 levels across a passage
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Oxford Learner's Dictionaries have an official developer API?+
What does the `senses` array contain and how is it structured?+
senses represents one numbered meaning of the headword. Fields include sense_id, number, definition, cefr (the proficiency level for that specific sense), grammar, labels, usage, pattern, examples, extra_examples, and synonyms. A single headword may have many senses, and some senses may contain sub-senses within the same array.Does the API return word etymology or origin information?+
Can I retrieve entries in languages other than English?+
How does `lookup_word` handle homographs — words with multiple unrelated entries?+
lookup_word resolves to the primary entry and lists the others in the other_entries array, each with its own entry_id. Pass those identifiers to get_entry to retrieve the full data for each homograph separately.