MakerWorld APImakerworld.com ↗
Search MakerWorld 3D model listings, retrieve print profiles, filament weights, and images via a clean REST API. 4 endpoints covering models, tags, and creator data.
What is the MakerWorld API?
The MakerWorld API provides 4 endpoints for searching and retrieving 3D model data from MakerWorld.com. Use search_models to query by keyword or browse trending listings with download counts, likes, and print stats, or call get_model_detail to fetch a specific design's full description, tags, creator handle, license type, and image URLs. Two additional batch endpoints cover filament weight breakdowns and photo sets across multiple model IDs.
curl -X GET 'https://api.parse.bot/scraper/ebc3d50a-0fe2-4bcf-9cbe-3429e1410ab2/search_models?limit=5&offset=0&keyword=dragon&order_by=score' \ -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 makerworld-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.makerworld_3d_models_api import MakerWorld, Sort
mw = MakerWorld()
# Search for dragon models sorted by most downloads
for model in mw.modelsummaries.search(keyword="dragon", order_by=Sort.DOWNLOAD_COUNT):
print(model.title, model.stats.downloads, model.creator.name)
# Get full details including print profiles and filament info
detail = model.details()
print(detail.summary[:80], detail.license)
for profile in detail.print_profiles:
print(profile.title, profile.weight_grams)
for filament in profile.filaments:
print(filament.type, filament.grams, filament.color)
# Get photos for this model
photo_result = detail.photos()
for photo_model in photo_result.models:
print(photo_model.design_id, photo_model.images)
break
Search for 3D models on MakerWorld by keyword. Returns paginated listings with title, images, tags, creator info, and stats such as downloads, likes, and prints. An empty keyword returns trending/popular models. Pagination is offset-based; each page returns up to `limit` items starting from `offset`.
| Param | Type | Description |
|---|---|---|
| limit | integer | Number of results per page (max 50). |
| offset | integer | Pagination offset (number of results to skip). |
| keyword | string | Search keyword (e.g., 'dragon', 'vase'). Empty string returns trending/popular models. |
| order_by | string | Sort order for results. |
{
"type": "object",
"fields": {
"limit": "integer - results per page",
"total": "integer - total number of matching models",
"offset": "integer - current pagination offset",
"results": "array of model summary objects with id, title, slug, images, tags, creator, stats, created_at, license, is_exclusive"
},
"sample": {
"data": {
"limit": 5,
"total": 4761,
"offset": 0,
"results": [
{
"id": 1239342,
"slug": "improved-crystal-dragon",
"tags": [
"crystaldragon",
"Dragon",
"dragon"
],
"stats": {
"likes": 2030,
"prints": 6279,
"downloads": 13946,
"collections": 5321
},
"title": "Improved Crystal Dragon",
"images": [
"https://makerworld.bblmw.com/makerworld/model/US899654d90119de/design/2025-03-23_7b57e1b7cf1f2.png"
],
"creator": {
"name": "Frost",
"handle": "frost12"
},
"license": "BY-SA",
"created_at": "2025-03-23T10:11:56Z",
"is_exclusive": false
}
]
},
"status": "success"
}
}About the MakerWorld API
Search and Discovery
The search_models endpoint accepts a keyword string and returns paginated listings — up to 50 per page — with each result including the model id, title, slug, tags, images, creator object (name and handle), and a stats object covering downloads, likes, prints, and collections counts. Passing an empty keyword returns trending or popular models. Results can be sorted using the order_by parameter, and pagination is offset-based via the limit and offset inputs. The response also includes total, so you can calculate how many pages exist for a given query.
Model Detail and Print Profiles
The get_model_detail endpoint accepts a design_id — either a plain numeric string like 655976 or a slug-suffixed form like 655976-improved-crystal-dragon — and returns the full model record. This includes a plain-text summary (HTML stripped), all images, the license string, created_at ISO datetime, and tags. The get_filament_weights endpoint accepts a comma-separated list of design_ids and returns, per model, a total_weight_grams value along with an array of print_profiles, each with its own title and per-filament breakdown including type, grams, meters, and color data.
Batch Image Retrieval
The get_model_photos endpoint accepts the same comma-separated design_ids format and returns all available product image URLs for each model in a single call. Each item in the response carries a design_id, a title (or null if unavailable), and an images array. An optional error field signals per-model failures without failing the whole batch, making it practical to query dozens of models at once without handling individual 404s.
The MakerWorld API is a managed, monitored endpoint for makerworld.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when makerworld.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 makerworld.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 print catalog app that surfaces trending MakerWorld models with download and like counts.
- Estimate material costs by batch-querying filament weights in grams and meters across a list of model IDs.
- Index MakerWorld models by tag to power a domain-specific search engine for a niche (e.g., miniatures, tools).
- Display creator profiles with handle and model stats to surface prolific designers on a community site.
- Check license types on models before including them in a commercial print-on-demand workflow.
- Pre-fetch all product images for a set of design IDs using the batch photo endpoint to populate a print queue UI.
- Track popularity trends over time by periodically calling search_models with an empty keyword and recording stats snapshots.
| 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 MakerWorld have an official developer API?+
What does get_filament_weights return beyond total grams?+
print_profiles array for each model. Each profile includes a title and per-filament entries covering the filament type, weight in grams, length in meters, and color. This is useful when a model has multiple profiles or uses more than one filament color.How does pagination work in search_models, and is there a hard cap on results?+
limit (max 50 per page) and offset (number of results to skip). The response includes a total field indicating the full result count for the query, so you can page through all matching models by incrementing the offset in steps equal to your limit.Does the API return user comments or reviews on models?+
Can I retrieve models by a specific creator or filter by license type?+
search_models endpoint filters by keyword and sort order; it does not accept creator handle or license as direct filter parameters. License data is returned per model in both search results and get_model_detail. You can fork this API on Parse and revise it to add a creator-specific or license-filtered endpoint.