ThemeWagon APIthemewagon.com ↗
Access ThemeWagon's full catalog of web themes and templates. Search by keyword, filter by category, framework, or tag, and retrieve ratings, reviews, and metadata.
What is the ThemeWagon API?
The ThemeWagon API covers 15 endpoints that expose ThemeWagon's catalog of web themes and templates, including search, category/framework/tag filtering, and per-theme detail. The get_theme_detail endpoint returns fields like features, frameworks, categories, version, and rating for any theme by slug. Companion endpoints like list_categories, list_frameworks, and list_tags provide the slugs needed to drive all filter-based queries.
curl -X GET 'https://api.parse.bot/scraper/0ce127ad-ba7a-4e2d-bf91-06b007c9b6e2/get_all_themes?page=1&sort=date' \ -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 themewagon-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.
from parse_apis.themewagon_api import ThemeWagon, Sort, Theme, ThemeSummary, Category, Framework, Tag
tw = ThemeWagon()
# Search for dashboard themes
for theme in tw.themes.search(query="dashboard", limit=5):
print(theme.title, theme.slug, theme.price, theme.rating)
# Get full details for a specific theme
phoenix = tw.themes.get(slug="phoenix")
print(phoenix.title, phoenix.version, phoenix.rating, phoenix.download_count)
print(phoenix.frameworks, phoenix.categories)
# List reviews for a theme
for review in phoenix.reviews.list():
print(review.author, review.rating, review.title, review.date)
# Browse all themes sorted by popularity using the Sort enum
for theme in tw.themes.list_all(sort=Sort.POPULARITY, limit=3):
print(theme.title, theme.price)
# Navigate from a summary to full detail
for summary in tw.themes.list_latest(limit=1):
detail = summary.details()
print(detail.title, detail.description, detail.features)
# Browse by category using constructible resource
admin_cat = tw.category(slug="admin-dashboard")
for theme in admin_cat.themes(limit=5):
print(theme.title, theme.slug)
# Browse by framework
tailwind = tw.framework(slug="tailwind-css")
for theme in tailwind.themes(limit=3):
print(theme.title, theme.download_count)
# Browse by tag
anim_tag = tw.tag(slug="animation")
for theme in anim_tag.themes(limit=3):
print(theme.title, theme.rating)
# List all categories
for cat in tw.categories.list():
print(cat.name, cat.slug, cat.count)
# List all frameworks
for fw in tw.frameworks.list():
print(fw.name, fw.slug)
Returns a paginated list of all themes/templates. Supports sorting by date, popularity, and rating. Returns 20 themes per page. Each theme includes id, title, slug, url, price, rating, rating_count, and thumbnail.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| sort | string | Sort order for results. |
{
"type": "object",
"fields": {
"page": "integer, current page number",
"themes": "array of theme summary objects with id, title, slug, url, price, rating, rating_count, and thumbnail"
},
"sample": {
"data": {
"page": 1,
"themes": [
{
"id": 153916,
"url": "https://themewagon.com/themes/notus-vue/",
"slug": "notus-vue",
"price": "Free",
"title": "Notus Vue",
"rating": 0,
"thumbnail": "https://themewagon.com/wp-content/uploads/2026/06/notus-vue-900x900.webp",
"rating_count": 0
}
]
},
"status": "success"
}
}About the ThemeWagon API
Browsing and Searching the Catalog
get_all_themes returns a paginated list of theme summaries — each with id, title, slug, url, price, rating, rating_count, and thumbnail — with optional sort values of date, popularity, or rating. search_themes accepts a query parameter (e.g. dashboard, portfolio, react) and returns the same summary shape alongside the echoed query string. Both endpoints page at 20 results and accept a page integer. get_latest_themes and get_popular_themes provide the same structure without requiring a query.
Filtering by Category, Framework, Tag, and Price
get_themes_by_category and get_themes_by_tag accept a slug parameter sourced from list_categories and list_tags respectively. list_categories returns id, name, slug, count, permalink, and review_count for every category; list_tags returns id, name, slug, count, and description. get_themes_by_framework filters by framework slug from list_frameworks and returns download_count in place of id and rating_count. get_free_themes and get_premium_themes segment the catalog by price tier and also return download_count.
Theme Detail and Reviews
get_theme_detail takes a slug and returns the full metadata record: tags, price, title, rating, version, features (an array of feature strings), categories, and frameworks. When version is unavailable it returns null. get_theme_reviews accepts the same slug and returns all reviews in one response — no pagination — with each review object containing author, rating, title, text, and date. get_editors_pick surfaces a curated selection of featured themes with the same shape as the free/premium endpoints.
Data Shape Differences to Note
Not all endpoints return the same theme object shape. Endpoints backed by paginated listing pages (e.g. get_all_themes, get_themes_by_category, get_latest_themes) return id and rating_count. Endpoints for free, premium, framework-filtered, and editor's pick themes return download_count instead of id and rating_count. Code that normalizes theme objects across endpoints should account for this difference.
The ThemeWagon API is a managed, monitored endpoint for themewagon.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when themewagon.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 themewagon.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?+
- Build a theme discovery tool that lets users filter by framework slug (e.g.
tailwind-css,next-js) usingget_themes_by_framework. - Aggregate rating and review data from
get_theme_reviewsandget_theme_detailto compare community sentiment across themes. - Populate a curated design resource site using
get_editors_pickandget_premium_themeswithprice,thumbnail, andratingfields. - Track newly released themes over time by polling
get_latest_themesand storingslugandversionfromget_theme_detail. - Generate a tag taxonomy for a design blog by querying
list_tagsand retrievingname,slug,count, anddescriptionfor every tag. - Build a free-theme gallery filtered by category using
get_free_themescombined with slugs fromlist_categories. - Monitor download counts for specific themes by periodically calling
get_theme_detailor framework/free/premium listing endpoints that exposedownload_count.
| 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 ThemeWagon have an official developer API?+
What does `get_theme_detail` return that listing endpoints don't?+
get_theme_detail returns features (an array of feature strings), frameworks, categories, tags, and version — fields not present in any listing or search response. It takes a slug obtainable from any listing endpoint's results[*].slug field.Why do some endpoints return `download_count` while others return `rating_count` and `id`?+
download_count instead of id and rating_count. Listing endpoints like get_all_themes, get_themes_by_category, and get_latest_themes return id and rating_count without download_count. There is no single unified shape across all endpoints.Does the API expose theme preview URLs or live demo links?+
url (the ThemeWagon page URL) and thumbnail (image URL) but does not include a separate live demo or preview URL field. You can fork this API on Parse and revise it to add a demo URL endpoint using a theme's detail page.How many reviews does `get_theme_reviews` return, and is there pagination?+
get_theme_reviews returns all available reviews for a theme in a single response. There is no page parameter — all review objects with author, rating, title, text, and date are included at once. For themes with very large review counts this means one potentially large payload.