Sketchfab APIsketchfab.com ↗
Access Sketchfab's 3D model catalog via API. Search models by category, license, and tags. Retrieve metadata, thumbnails, user profiles, and collections.
What is the Sketchfab API?
This API provides 12 endpoints covering Sketchfab's public 3D model catalog, from keyword search to detailed model metadata. Use search_models to filter by category, license, animation status, or staff-pick flag, and get_model to retrieve geometry stats like faceCount, tag arrays, creator info, and license details for any specific model UID. User profiles, collections, tags, and viewer configuration options are also accessible.
curl -X GET 'https://api.parse.bot/scraper/7958d03f-bece-4819-bd6f-8b0ad71f3158/search_models?limit=5&query=robot&license=by&sort_by=-likeCount&animated=true&categories=animals-pets&staffpicked=true&downloadable=true' \ -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 sketchfab-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.
"""Sketchfab 3D Models API — discover models, explore creators, browse collections."""
from parse_apis.sketchfab_3d_models_api import (
Sketchfab, Category_, License, Sort, ModelNotFound
)
client = Sketchfab()
# Search for animated models in a category sorted by most liked
for model in client.modelsummaries.search(query="dragon", categories=Category_.ANIMALS_PETS, sort_by=Sort.MOST_LIKED, limit=3):
print(model.name, model.like_count, model.view_count)
# Fetch a specific model by UID and inspect its full detail
detail = client.models.get(uid="fb0053a2e59b43868e934c239bf4eb36")
print(detail.name, detail.face_count, detail.vertex_count)
# Walk comments on that model via the sub-resource
for comment in detail.comments.list(limit=3):
print(comment.user.username, comment.body[:60] if comment.body else "")
# Navigate to the creator's collections and browse models within one
creator = detail.user
collection = creator.collections(limit=1).first()
if collection:
for cm in collection.models(limit=2):
print(cm.name, cm.view_count)
# Typed error handling — catch a missing model gracefully
try:
client.models.get(uid="0000000000000000000000000000dead")
except ModelNotFound as exc:
print(f"Model not found: {exc.uid}")
print("exercised: modelsummaries.search / models.get / comments.list / user.collections / collection.models")
Search for 3D models on Sketchfab with filters including category, license, animation, staff picks, and downloadability. Returns paginated results via cursor-based pagination. Without a query, returns all models in default order.
| Param | Type | Description |
|---|---|---|
| limit | integer | Number of results per page (max 24). |
| query | string | Search keyword to filter models by name or description. |
| cursor | string | Pagination cursor from a previous response's next_cursor value. |
| license | string | Filter by license slug. |
| sort_by | string | Sort order for results. |
| animated | boolean | Filter for animated models only. |
| categories | string | Filter by category slug. |
| staffpicked | boolean | Filter for staff-picked models only. |
| downloadable | boolean | Filter for downloadable models only. |
{
"type": "object",
"fields": {
"next": "string URL for the next page or null",
"cursors": "object with next and previous cursor strings for pagination",
"results": "array of model summary objects with uid, name, viewCount, likeCount, thumbnails, user, faceCount, vertexCount",
"previous": "string URL for the previous page or null",
"next_cursor": "string next cursor value or null"
},
"sample": {
"data": {
"next": "https://api.sketchfab.com/v3/models?count=5&cursor=bz01&q=robot",
"cursors": {
"next": "bz01",
"previous": null
},
"results": [
{
"uid": "c6bb9779bc7a49688e8287b8e275b818",
"name": "Irnface",
"tags": [],
"user": {
"uid": "0fb25abaf1794fd9beda810de09f42d0",
"username": "JoeHarvey",
"displayName": "JoeHarvey"
},
"faceCount": 3331,
"likeCount": 0,
"viewCount": 21,
"categories": [],
"thumbnails": {
"images": [
{
"uid": "39cde88e282d450593c30819597ea340",
"url": "https://media.sketchfab.com/models/c6bb9779bc7a49688e8287b8e275b818/thumbnails/4512995a4bcb40fdaa20d23902478920/083c870d772449e4add91eeecea4e035.jpeg",
"size": 121615,
"width": 1920,
"height": 1080
}
]
},
"description": "",
"publishedAt": "2014-04-01T09:39:13",
"vertexCount": 1770,
"commentCount": 0,
"animationCount": 0,
"isDownloadable": false
}
],
"previous": null
},
"status": "success"
}
}About the Sketchfab API
Search and Filter 3D Models
The search_models endpoint accepts up to eight parameters including query, categories, license, animated, and staffpicked. Results are paginated using cursor-based pagination — the cursors.next value from one response feeds into the cursor parameter of the next call. Each result object includes uid, name, viewCount, likeCount, thumbnails, and a user summary. Sort order is controlled via sort_by with options including -likeCount, -viewCount, and -createdAt. Maximum page size is 24 results.
Model Detail and Viewer Options
get_model returns a full metadata record for a model UID: geometry stats (faceCount), full tags and categories arrays, license object, and nested thumbnails. For 3D viewer integration, get_model_3d_options returns scene-level configuration including camera position and constraints, lighting with a light configuration array, shading renderer settings, and per-material materials channel definitions. Response shape varies per model since many of these fields are optional.
Users and Collections
get_user_profile returns a user's biography, skills, followerCount, modelCount, and avatar image URLs given a UID or username string. get_user_models and get_collections both support cursor-based pagination and filter results to a single username. get_collection_models then lists the models inside any collection UID returned by get_collections.
Reference Lookups
list_categories returns the complete set of category objects with slug values usable directly in search_models. get_licenses returns all license types with slug, label, fullName, requirements, and a link URL. list_tags returns tag records with name, slug, and uri, ordered by most recently created.
The Sketchfab API is a managed, monitored endpoint for sketchfab.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when sketchfab.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 sketchfab.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 3D asset discovery tool filtered by license type (e.g. CC0) for commercial reuse workflows
- Aggregate staff-picked models by category to populate a curated gallery or newsletter
- Retrieve faceCount and geometry metadata to pre-screen models before importing into a pipeline
- Map user profiles with followerCount and modelCount to identify prolific creators in a niche
- Enumerate all models in a collection to synchronize a local asset library with a Sketchfab curator's picks
- Extract viewer configuration from get_model_3d_options to replicate camera and lighting presets in a custom renderer
- Index tag slugs via list_tags to power autocomplete in a 3D model search interface
| 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 Sketchfab have an official developer API?+
What does get_model_3d_options return, and does it vary between models?+
scene object with field-of-view and post-processing settings, a camera object with position and constraint data, lighting with an array of individual light configs, shading renderer type, and a materials map keyed by material ID. Because many fields are optional and depend on how the model was configured by its creator, the response schema is not uniform across models.Is pagination reliable across all endpoints?+
cursors.next works consistently for search_models, get_user_models, get_collections, get_collection_models, and list_tags. The get_model_comments endpoint documents that cursor pagination may not be reliable and should be used with that caveat in mind.Does the API expose download URLs or 3D file data for models?+
Can I retrieve likes or followers for a specific model or user over time (historical stats)?+
get_model returns current likeCount and viewCount as point-in-time integers, and get_user_profile returns the current followerCount. No historical time-series data is exposed. You can fork this API on Parse and revise it to add periodic polling and store snapshots externally.