Verbformen APIverbformen.com ↗
Access German word data from Verbformen.com: CEFR levels (A1-C2), grammatical categories, IPA pronunciations, translations, and detail URLs via one search endpoint.
What is the Verbformen API?
The Verbformen.com API exposes German vocabulary data through a single search endpoint that returns up to 6 response fields per word — including CEFR level, grammatical category, IPA pronunciation, translations, and a direct detail URL. You can filter by exact proficiency level (A1 through C2), search by keyword or starting letter, and control result volume with a limit parameter, making it straightforward to build vocabulary tools, flashcard systems, or language-learning pipelines.
curl -X GET 'https://api.parse.bot/scraper/32c65e70-02a1-4a5e-9910-513b48a477f5/search?level=A1&limit=3&query=haben' \ -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 verbformen-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: Verbformen German Dictionary — search words by level and keyword."""
from parse_apis.verbformen_german_dictionary_api import Verbformen, Level, WordNotFound
client = Verbformen()
# Search A1-level words containing "haben" — limit caps total items fetched.
for word in client.words.search(query="haben", level=Level.A1, limit=5):
print(word.word, word.level, word.translations[:3])
# Drill into a single B1 word to inspect its IPA and category.
entry = client.words.search(query="schreiben", level=Level.B1, limit=1).first()
if entry:
print(entry.word, entry.category, entry.ipa[:2], entry.url)
# Typed error handling for a query unlikely to match.
try:
result = client.words.search(query="xyznonexistent", level=Level.C2, limit=1).first()
if result:
print(result.word, result.translations[:2])
else:
print("No words matched the query at C2 level")
except WordNotFound as exc:
print(f"Not found: {exc}")
print("exercised: words.search with Level enum, .first(), typed error catch")
Search for German words by keyword and/or exact CEFR level (A1-C2). The level parameter is an exact match filter; a word only appears in results if it is classified at that specific level. Returns grammatical info, translations, IPA pronunciations, and detail URLs. Results may be empty if no words match the query at the specified level.
| Param | Type | Description |
|---|---|---|
| level | string | Exact CEFR level filter. Accepted values: A1, A2, B1, B2, C1, C2. |
| limit | integer | Maximum number of results to return. Omitting returns all matching results. |
| query | string | Search keyword or starting letter (e.g. 'haben', 'A'). Omitting returns all words at the given level. |
{
"type": "object",
"fields": {
"data": "array of word objects each containing word, level, category, translations, ipa, and url"
},
"sample": {
"data": {
"data": [
{
"ipa": [
"/ˈhaːbən/",
"/hat/"
],
"url": "https://www.verbformen.com/conjugation/haben.htm",
"word": "haben",
"level": "A1",
"category": "verb · auxiliary verb 'haben' · irregular verb · sometimes also: · transitive verb · intransitive verb · with reflexive pronouns (sich)",
"translations": [
"have",
"possess",
"have with one",
"be available",
"be free"
]
}
]
},
"status": "success"
}
}About the Verbformen API
What the API Returns
The search endpoint returns an array of word objects, each carrying: word (the German term), level (CEFR classification: A1–C2), category (grammatical type such as noun, verb, or adjective), translations (English equivalents), ipa (International Phonetic Alphabet transcription), and url (a link to the full Verbformen.com entry for that word). The status field at the top level confirms whether the request succeeded.
Filtering and Querying
The search endpoint accepts three optional parameters. query accepts a keyword — a full word like haben or a starting letter like A — and filters results to matching entries. level applies an exact-match CEFR filter; specifying B1 returns only words classified at B1, not adjacent levels. limit caps the number of returned word objects; omitting it returns all matching results, which can be a large set when filtering by level alone without a query string.
Coverage and Scope
Verbformen.com classifies German vocabulary across all six CEFR bands (A1, A2, B1, B2, C1, C2). The API reflects this classification directly, so each word object has a discrete, queryable level rather than a score or range. IPA data enables phonetic features in language-learning apps without requiring a separate pronunciation source. The url field points to Verbformen.com's detail page for each entry, where conjugation tables and additional grammar notes are available — though that detail-page content is not returned by the current API.
The Verbformen API is a managed, monitored endpoint for verbformen.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when verbformen.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 verbformen.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?+
- Generate graded vocabulary lists for each CEFR level to feed into spaced-repetition flashcard decks.
- Filter German words by
levelto build level-appropriate reading exercises for A1–C2 learners. - Use the
ipafield to add pronunciation guides to language-learning apps without a separate phonetics database. - Look up
translationsandcategoryto auto-tag imported word lists with part-of-speech and English meaning. - Build a vocabulary difficulty checker that classifies user-submitted German text by querying each word's CEFR level.
- Populate autocomplete suggestions in a German tutoring app by querying words starting with a given letter via the
queryparameter. - Export structured vocabulary data (word, level, translation) for curriculum design or academic research on German learner vocabulary.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Verbformen.com have an official developer API?+
How does the `level` filter behave — does it return words at or below a given CEFR level?+
level parameter is an exact match. Passing B1 returns only words classified at B1; it does not include A1 or A2 words. To collect vocabulary across multiple levels, send separate requests for each level value you need.Does the API return conjugation tables or full declension data for German words?+
search endpoint returns the base word form, grammatical category, CEFR level, translations, and IPA — it does not include conjugation paradigms or declension tables. The url field points to each word's Verbformen.com detail page where that information appears. You can fork this API on Parse and revise it to add an endpoint that retrieves conjugation or declension data from the detail page.What happens if I omit both `query` and `level`?+
limit is advisable in that case to avoid unexpectedly large responses. Combining query and level together narrows results to words that match the keyword AND belong to that exact CEFR band.Is audio or spoken pronunciation data available alongside the IPA field?+
ipa field but does not return audio file URLs or speech data. You can fork this API on Parse and revise it to add audio URL retrieval if that data is accessible on the source pages.