MakerWorld API Guide: Model Detail, Collections & Search Endpoints (2026)
Is There a Public MakerWorld API?
Short answer: no official one. MakerWorld does not publish an API with keys, quotas or documentation. What exists — and what every third-party tool, including this platform, relies on — are the internal JSON endpoints that MakerWorld's own web app and Bambu Handy call.
This guide documents the two endpoints used in production by MakerWorld Estimator, the response fields you can rely on, and the search paths that actually work for developers. Treat everything here as undocumented but observable: endpoints can change without notice, so always cache and degrade gracefully.
Endpoint 1: Model Detail
GET https://makerworld.com/api/v1/design-service/design/{modelId}?handle=en
The modelId is the number in any model URL:
https://makerworld.com/en/models/1717122-statue-of-liberty
└── modelId = 1717122
A minimal curl request looks like this:
curl 'https://makerworld.com/api/v1/design-service/design/1717122?handle=en' \
-H 'accept: application/json, text/plain, */*' \
-H 'referer: https://makerworld.com/' \
-H 'origin: https://makerworld.com' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36'
Response fields worth knowing
| Field | Type | Meaning |
|---|---|---|
title |
string | Model name |
coverUrl |
string | Cover image URL |
defaultInstanceId |
number | Default print profile ID |
instances |
array | All print profiles (see below) |
creator.name / creator.avatar |
string | Designer identity |
likeCount, downloadCount, printCount |
number | Engagement stats |
license |
string | Licence tag (CC BY, Standard Digital File License, …) |
needAms |
boolean | Whether multi-color/3D Printing Glossary">AMS is required |
ratingScore |
number | Average rating |
description |
string | Model description (may contain HTML) |
The instances[] array
Each instance is a print profile — the useful unit for cost estimation:
| Field | Type | Meaning |
|---|---|---|
id |
number | Profile ID (#profileId-XXXX in URLs) |
title |
string | Profile name |
prediction |
number | Print time in seconds (divide by 3600 for hours) |
weight |
number | Total filament weight in grams |
cover |
string | Profile image |
instanceFilaments |
array | [{ type, color, usedG, usedM }] per filament |
extention.modelInfo.plates |
array | Per-plate breakdown: { index, name, thumbnail, prediction, weight, filaments } |
The plates array is what makes per-plate costing possible — plate count, plate weights, plate print times and per-plate colors. If plates is missing, fall back to profile-level totals.
Endpoint 2: Collections (Favorites)
GET https://makerworld.com/api/v1/design-service/favorites/{collectionId}?handle=en
The collection ID is the number in a collection URL:
https://makerworld.com/en/collections/27910720-large-prints
└── collectionId = 27910720
This endpoint returns collection metadata (name, creator, description, cover) plus the design list inside it. It is the basis for batch estimation — fetch once, then resolve each design with the model detail endpoint (or reuse cached data).
Our own batch flow is documented on the collection pricing guide; the API-side equivalent is GET /api/scrape/collection?url={collectionUrl} on the estimator API.
Search: What Works Instead
The query "MakerWorld search models endpoint" implies a public search API. There is no documented one. The site's search is an internal call used by MakerWorld's own clients, with no published contract.
For programmatic search, use paths that are stable and within terms:
- Estimator directory search —
GET /api/models?q={query}&sort={sort}&page={n}returns already-cached models with precomputed costs. Fast, documented, and cache-friendly. See the API reference. - MCP
list_models— the same catalogue for AI agents over the MCP server. - Your own index — if you need the full MakerWorld catalogue, build it from model IDs you collect legitimately (your own uploads, public links your users provide) and cache aggressively.
Avoid hammering the internal search endpoints: they are undocumented, rate-limited in practice, and fragile.
Reliability, Headers and Etiquette
- Send browser-like headers.
Referer,Origin,accept, and a realuser-agentmatter. Some environments are fingerprinted and blocked by Cloudflare regardless — this platform's local dev server even falls back tocurlfor that reason. - Retry with backoff. Handle
403,429and5xxwith a single delayed retry at minimum; exponential backoff is better. - Cache everything. Model data changes rarely. Our production cache stores per-profile rows and serves repeat requests from memory/database; a sensible TTL is days, not minutes.
- Timeout hard. 10-second request timeouts prevent a hung upstream from pinning your workers.
- Be a good citizen. No bulk crawling of user profiles or search pages; fetch what you need for a user-initiated action.
Turning API Data into Costs
Raw grams and seconds become money with a pricing model — filament rate per gram, machine rate per hour, setup per plate, purge fees for multi-color, and margin. That is exactly what this platform computes:
- REST:
GET /api/scrape?url={makerworld_url}returns the model plus a full cost breakdown (reference). - MCP: the
scrape_modeltool does the same for AI agents (setup). - Browser: paste any MakerWorld URL into the calculator for the plate-by-plate result.
- Licensing: check the
licensefield against the licence reference before quoting commercial work.
The full field-level documentation of our API (parameters, responses, auth, credits) lives at /api, with the machine-readable spec at /openapi.yaml.