DermNet NZ APIdermnetnz.org ↗
Access DermNet NZ's dermatology database via API. Search conditions, retrieve symptoms, causes, treatments, and browse image galleries for hundreds of skin conditions.
What is the DermNet NZ API?
The DermNet NZ API provides structured access to one of the largest open dermatology references on the web across 3 endpoints. Use list_conditions to search or browse conditions by keyword, get_condition_details to pull full clinical write-ups (symptoms, causes, diagnosis, treatment, prognosis) plus all associated images for a given slug, and get_image_library to search the entire DermNet image database by keyword.
curl -X GET 'https://api.parse.bot/scraper/c465a1a4-e154-43fb-bf56-9ce7571dd9e7/list_conditions?query=eczema' \ -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 dermnetnz-org-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.
"""DermNet NZ — search conditions, drill into details, browse image library."""
from parse_apis.dermnet_nz_dermatological_api import DermNet, ConditionNotFound
client = DermNet()
# Search conditions by keyword; limit= caps total items fetched.
for summary in client.conditions.search(query="eczema", limit=5):
print(summary.title, summary.slug, summary.categories)
# Drill into one result for full clinical detail.
first = client.conditions.search(query="alopecia", limit=1).first()
if first:
condition = first.details()
print(condition.title, condition.image_count)
print(condition.details.description[:120])
for section in condition.all_sections[:2]:
print(section.header, len(section.content))
# Direct get by slug when you already know the identifier.
try:
detail = client.conditions.get(slug="acne-vulgaris")
print(detail.title, detail.url)
for img in detail.images[:2]:
print(img.caption, img.url)
except ConditionNotFound as exc:
print(f"Condition not found: {exc.slug}")
# Search the image library across all conditions.
for image in client.libraryimages.search(query="psoriasis", limit=5):
print(image.title, image.file_size, image.is_sensitive)
print("Exercised: conditions.search, conditions.get, summary.details, libraryimages.search")
Search for dermatological conditions on DermNet NZ. When a query is provided, filters conditions by matching the query against titles and synonyms. When no query is provided, returns a default set of hair and scalp conditions. Results are sorted alphabetically by title.
| Param | Type | Description |
|---|---|---|
| query | string | Optional search keyword to filter conditions by title or synonym. Omitting the query returns a default set of hair and scalp conditions. |
{
"type": "object",
"fields": {
"conditions": "array of condition objects with title, slug, url, categories, and synonyms",
"is_filtered": "boolean indicating whether default hair/scalp filter was applied (true when no query provided)",
"total_found": "integer total number of matching conditions"
},
"sample": {
"data": {
"conditions": [
{
"url": "https://dermnetnz.org/topics/asteatotic-eczema",
"slug": "asteatotic-eczema",
"title": "Asteatotic eczema",
"synonyms": [
"Xerosis",
"Xerosis cutis",
"Eczema craquele"
],
"categories": [
"Eczemas"
]
}
],
"is_filtered": false,
"total_found": 38
},
"status": "success"
}
}About the DermNet NZ API
Condition Search and Discovery
The list_conditions endpoint accepts an optional query string and returns an array of condition objects, each containing a title, slug, url, categories, and synonyms. When no query is provided, the endpoint returns a default set of hair and scalp conditions and sets is_filtered: true in the response. With a query, it matches against both titles and synonyms, sorts results alphabetically, and reports the total via total_found. The slug values returned here are the required input for the detail endpoint.
Condition Details and Clinical Content
get_condition_details takes a slug (for example, acne-vulgaris or alopecia-areata) and returns a structured details object with seven mapped fields: description, symptoms, causes, diagnosis, treatment, prevention, and outcome. The response also includes an all_sections array that preserves every content section from the source page as raw header and content pairs, so sections that fall outside the seven mapped fields are still accessible. Images attached to the condition page come back as an array of objects with url, caption, title, source, and id, and the image_count integer reflects how many were found.
Image Library Search
get_image_library accepts a required query string and searches across DermNet's full image database, matching against image titles and captions. Each result in the images array carries a title, caption, url, detail_url, file_size, and an is_sensitive boolean that flags content classified as sensitive. The endpoint returns up to 100 images per query.
The DermNet NZ API is a managed, monitored endpoint for dermnetnz.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when dermnetnz.org 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 dermnetnz.org 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?+
- Build a symptom-to-diagnosis reference tool that surfaces condition names and synonyms from
list_conditionsfor a given keyword. - Populate a clinical decision-support app with structured treatment and diagnosis text from
get_condition_details. - Generate illustrated dermatology study materials by pairing condition write-ups with their associated image arrays.
- Filter out sensitive images from a patient-facing interface using the
is_sensitiveflag returned byget_image_library. - Index DermNet categories and slugs from
list_conditionsto build a browsable skin condition taxonomy. - Retrieve prognosis and prevention content from the
outcomeandpreventionfields to power condition summary cards. - Search DermNet images by keyword to find captioned clinical photos for academic or training datasets.
| 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 DermNet NZ have an official developer API?+
What does `get_condition_details` return beyond the seven mapped clinical fields?+
description, symptoms, causes, diagnosis, treatment, prevention, outcome), the response includes an all_sections array containing every content section found on the condition page as raw header and content strings. This means sections that don't map to the standard clinical fields are still accessible in full.Does `list_conditions` return the full DermNet condition catalogue, or only a subset?+
query is supplied, list_conditions filters by matching against condition titles and synonyms and returns all matching results sorted alphabetically with a total_found count. Without a query, it returns a default set of hair and scalp conditions rather than the full catalogue. The endpoint does not currently support paginating through the entire DermNet condition index. You can fork this API on Parse and revise it to add a paginated browse-all endpoint.Can I retrieve patient forum posts, case submissions, or user-contributed content from DermNet?+
How many images can `get_image_library` return for a single query?+
file_size field and an is_sensitive boolean, which you can use to filter results client-side. There is no pagination parameter to retrieve results beyond the 100-image cap in a single call.