Every model. Every maker.
Collections and contests.
Search and browse the public 3D models on Printables, read the designers who publish them, follow the collections they curate, and track the design contests the community competes in — as structured JSON. It is the deepest surface on FetchLayer: models, makers, collections and contests — eleven JSON routes plus a media stream, over one Bearer key.
Trusted by developers shipping real products.
493,590 served today
Request
$ curl -X POST \ https://api.fetchlayer.dev/printables/search-models \ -H "Authorization: Bearer ss-your-key" \ -H "Content-Type: application/json" \ -d '{"query":"cable management","sort":"popular"}'
Response
{
"models": [{
"id": "512345",
"name": "Under-desk cable tray",
"designer": "PrintSmith",
"license": "CC BY-NC-SA 4.0",
"stats": { "downloads": 41280,
"makes": 214, "rating": 4.9 }
}],
"totalMatches": 1842,
"notes": []
} Built for feedback workflows
Fetch the public signal. Use it wherever your team works.
Keyword search with real filters
Search models by keyword, then narrow by category, licence, material, printer, design tool, nozzle size, price, print time, finished weight, filament use, contest placing and publication date.
Trend research without a keyword
Browse a category ordered by trending, newest, rating, makes, views or likes. A keyword search tells you who made a thing; browsing tells you what the community is printing this week.
One model, completely
Description, licence, tags, every gallery image, the full file listing with per-file layer height, nozzle, printer, material, print time and filament weight, remix sources, contest placings, and the whole counter set.
Creator analytics
A designer’s profile, everything they have published newest-first with per-model downloads, likes, makes and ratings, and the public collections they curate — the signal for what they publish next.
Contests, rules and winners
Every design contest with its rules, prize list and entry count, and each contest’s placed entries best-placing-first with the winning model attached. The closest thing Printables has to an editorial ranking.
The filter vocabulary, on tap
Filters take ids, not names — 639 printers alone, plus the category tree, licences, materials and design tools. One free call returns the whole vocabulary so you never guess a value that silently matches nothing.
AI-ready JSON
Hand model descriptions, print settings, designer stats and contest results to an LLM or an MCP agent to cluster demand, rank makers, and write the brief — no HTML parsing, no wrapper code.
Find what the 3D printing community is actually printing.
Prefer not to write code? Give FetchLayer Research Chat a category, ask what is trending and who keeps publishing the hits, and turn the whole set into a structured file for your product research, roadmap, or store listing.
- ✓Ask questions in plain English
- ✓Analyze themes, sentiment, and pain points
- ✓Download the structured results as CSV or JSON
No code or setup required · Uses your FetchLayer credits
What is trending in this Printables category right now? Group the top models by designer, show downloads and makes per model, and flag which ones placed in a contest. Then export it as CSV.
I pulled the trending models in that category, grouped them across 28 designers, and marked the six that placed in a contest. Downloads, makes and ratings are on every row, and the file is ready to download.
printables-trending-models.csv
240 models · 14 columns · ready to download
Solutions
Build the workflow around the feedback.
Find the demand
Search public discussions for the print problems and requests a model should answer.
Explore →Read the reaction
Pull public comments on print reviews and maker videos in the same JSON shape.
Explore →Track the release
See how a new printer, filament, or model lands in public posts and replies.
Explore →From raw feedback to action
One request is the start of the workflow.
Store the structured response, run it on a schedule, pass it to an LLM, or feed it into the system your team already uses. FetchLayer handles retrieval so you can focus on the outcome.
- 01
Read the filter ids
Call /filter-values once and cache it: the category tree, the licences, the materials, all 639 printers and the design tools, each with the id every search filter expects.
- 02
Search or browse
Query by keyword with filters, or browse a category by trending, makes, views or rating. Page with a cursor, and check notes[] to see whether a listing was capped.
- 03
Follow it to the people
Take a model to its full detail, its designer’s catalogue and collections, or the contest it placed in — and build the trend report, the creator shortlist, or the product brief.
MCP & agents
Your AI already knows
how to use this.
Use the Printables endpoint directly from your MCP-compatible agent. Ask it to retrieve public feedback, identify patterns, and turn the result into a useful brief without writing integration glue.
Pick your editor and we hand you the config with your key already in it — no JSON to hand-edit, no wrapper code.
Get your free API keyFree tier · no credit card · any MCP host
What is trending in functional prints on Printables right now, who publishes the most-downloaded ones, and which of them won a contest?
Pulled 240 trending models in that category. Downloads concentrate in 12 designers, six of the top models carry a contest placing, and every row has print time, filament weight and licence attached.
Works with every MCP-compatible tool
Use cases
What makers build with Printables data.
Same API, endless applications. Here is what teams ship with public 3D model data.
Model discovery
Search public 3D models by keyword, then narrow by category, licence, printer, material, nozzle and print time.
AI agent context
Give Claude, Codex, or your MCP agent structured model descriptions, print settings and designer stats as JSON.
Designer & contest monitoring
Poll a designer or a running contest on a schedule and see new publishes and placings the day they land.
Demand research
Browse a category by trending, makes or likes to see what the community is actually printing this week.
Catalogue exports
Export a category with downloads, likes, makes, ratings and per-file print settings as one clean dataset.
Creator analytics
Track a designer’s whole catalogue, per-model performance and curated collections to predict what lands next.
Compare approaches
Spend time on the insight, not the collection layer.
| What you need | FetchLayer | Official API | Build it yourself |
|---|---|---|---|
| Search models without an account | ✓ | No public API | You build it |
| Designers, collections and contests | ✓ | No public API | Three more scrapers |
| Filter ids resolved in one call | ✓ | n/a | You reverse it |
| Per-file print settings as JSON | ✓ | n/a | You parse the page |
| Ready for AI and MCP workflows | ✓ | n/a | Your integration |
FetchLayer provides access to publicly available data. It is not affiliated with, endorsed by, or sponsored by the platform.
Pricing
Start free. Scale when ready.
Pay per request with no commitment, or lock in a flat monthly rate with built-in savings.
Free plan — 30 requests
Verify responses, inspect the API, no credit card required.
Pay as you go
$1.99
per 1,000 requests
$0.00199 per request · credits never expire
How credits work — no multipliers
One credit = one API call, on every endpoint and platform. No matter how many results come back, you pay for the call, not the output size. Most scraping APIs charge multipliers of 5x, 25x, even 75x per call depending on the target — here it's always 1.
- No multipliers — 1 request = 1 credit
- No monthly commitment
- Credits never expire
- Same API & MCP access as subscribers
- ∞ req/min, ∞ API keys
∞
Expiry
Credits stay until you use them. No monthly reset, no pressure to hit a quota.
0
Commitments
No subscription, no contract, no minimums. Start, pause, or scale whenever.
100%
Access
Every endpoint and MCP included. Not a limited tier — same data as any subscriber.
API reference
Every parameter, documented.
All requests are POST with a JSON body and Bearer auth header.
POST /printables/search-models Search public Printables models by keyword, with filters for category, licence, material, printer, design tool, nozzle size, price, print time, finished weight, filament use, featured and contest-winning status, and publication date.
query* string Keyword or phrase to search Printables models for sort string 'best_match' | 'latest' | 'popular' | 'rating' | 'makes_count'. Default best_match. categoryId string Restrict to one category, by id from /filter-values. licenseIds string[] Restrict to these licences, by id (max 20). materialIds number[] Restrict to models for these materials, by id (max 20). printerIds number[] Models with sliced files for these printers, by id. 639 valid values — read them from /filter-values. nozzleDiameters number[] Sliced files for these nozzle sizes in millimetres, e.g. 0.4. fileKinds string[] 'GCODE' | 'SLA' | 'NONE' — which ready-to-print files a model must carry. printDuration object Print time range in hours, as { from, to }. usedMaterial object Filament used range in grams, as { from, to }. publishedWithinDays number Only models published in the last N days (max 3650). limit number Maximum models returned (max 2000), or -1 for everything available. pages number Pages of results to collect in one request (max 100). cursor string Resume from a previous response's nextCursor. POST /printables/browse-models Models from one category or all of Printables with no keyword, ordered by trending, newest, rating, makes, views or likes. This is the trend-research endpoint: what is the community printing this week.
sort string 'trending' | 'latest' | 'rating' | 'makes' | 'views' | 'likes'. Default trending. categoryId string Restrict to one category, by id from /filter-values. tagIds number[] Models carrying these tags, by id — tag ids, not tag names. price string 'all' | 'paid' | 'free'. Default all. hasMake boolean Only models somebody has posted a printed copy of. limit number Maximum models returned (max 2000), or -1 for everything available. POST /printables/model-detail One model in full: long description, licence, tags, every gallery image, the file listing with per-file slicing settings, remix sources, every contest placing and the full counter set. Files carry names, sizes and settings — not download URLs.
model* string Model id, or a Printables model URL containing one POST /printables/user-profile A designer’s public profile: handle, display name, biography, join date, verification, follower and following counts, total downloads across everything published, collection count and profile level.
user* string Designer handle, @handle, profile URL, or numeric designer id POST /printables/user-models Everything one designer has published, newest first, with per-model downloads, likes, makes and ratings. Paged the same way as a search.
user* string Designer handle, @handle, profile URL, or numeric designer id limit number Maximum models returned (max 2000), or -1 for everything available. pages number Pages of results to collect in one request (max 100). POST /printables/user-collections The collections a designer has made public, each with its model count, likes, timestamps and a sample of its cover thumbnails.
user* string Designer handle, @handle, profile URL, or numeric designer id POST /printables/collection-detail One collection: name, description, owner, model count and likes. Printables publishes only the cover thumbnails, so sampleModels is a sample and modelCount is the real total.
collection* string Collection id, or a Printables collection URL POST /printables/contests Every Printables design contest with its id, rules, prize list and entry count. The ids are what the contest detail route takes.
POST /printables/contest-detail One contest and its placed entries, best placing first, each carrying the winning model in full — designer, category, stats and cover image.
contest* string Contest id, or a Printables contest URL POST /printables/filter-values The ids every filter takes: the category tree, the licences, the materials, all 639 printers, and the design tools. Filters are id-based, and a guessed name returns nothing rather than an error — so call this first. Free: it never consumes a credit.
POST /printables/resolve-url Parse any Printables URL into structured fields — model, designer, collection, contest or search, plus the id or keyword it carries. Free: it makes no upstream request at all.
url* string Any Printables URL, to be parsed into structured fields Fields marked * are required. Full API reference →
FAQ
Common questions.
Is Printables data public?
Yes. Printables is Prusa’s public 3D model community — models, designer profiles, collections and contest results are all published on the open web for anyone to read. FetchLayer retrieves those publicly available records and returns them as structured JSON. FetchLayer is not affiliated with, endorsed by, or sponsored by Prusa Research or Printables.
Do I need a Printables or Prusa account?
No. You authenticate with your FetchLayer API key — the same Bearer token you use for every other platform. There is no Printables account to link, no OAuth flow, and no token to refresh.
Can I download the model files?
No, and we would rather say so plainly than let you find out in production. A model’s file listing gives you every file with its name, size, kind (editable geometry or printer-ready sliced file) and, for sliced files, the layer height, nozzle diameter, printer, material, estimated print time and filament weight — but no download URL, because Printables issues model-file downloads only to a signed-in account and publishes no public URL for us to return. GET /printables/media streams gallery images, file previews, designer avatars and the printing-instructions PDF, with HTTP Range support. It does not serve geometry or G-code.
Why do the filters take ids instead of names?
Because Printables’ own search does. Category, licence, material, printer and design-tool filters are all id-based — and there are 639 valid printer values alone, before you get to materials and modelling apps. A printer name you invent is not an error, it is simply a filter nothing matches, so the request succeeds and returns nothing. POST /printables/filter-values returns the entire vocabulary in one call — the category tree with parents and children, the licences, the materials, every printer with its family, and the design tools — each with the id to pass back. Call it once, cache it, map names to ids yourself. It does not consume a credit.
What can I learn about a designer?
The profile route returns handle, display name, biography, join date, verification status, follower and following counts, makes posted, total downloads across everything they have published, public collection count, and their Printables profile level. From there, /user-models lists everything they have published newest-first with per-model downloads, likes, makes and ratings, and /user-collections shows what they curate — which is often a better predictor of what they will publish next than what they already have.
What are the contest endpoints for?
Printables runs design contests continuously, and they are the closest thing the platform has to an editorial ranking. /contests lists every contest with its rules, prize list and entry count, and /contest-detail returns the placed entries best-placing-first, each carrying the winning model in full. Entry counts tell you which themes actually pull makers in; winner lists tell you what the community rewards.
How complete is a result set?
Read the notes[] array on every response. It is where a truncated walk, a listing that could not be paged further, or an upstream limit is reported — the difference between "this designer has published 143 models" and "we stopped counting at 143". Listings also return nextCursor and hasNextPage, so a capped result is always resumable rather than lost.
Can I use this with an AI model or MCP agent?
Yes. Every response is structured JSON you can store, embed, or hand to an LLM, and all eleven JSON routes are exposed through FetchLayer’s MCP server — so an agent can find the trending models in a category, read the designer behind them, and check what placed in last month’s contest without any wrapper code.
How does billing work?
One API request equals one credit, and each page a paginated call walks counts as one — pages: 10 bills as ten. Two routes are free: /resolve-url, which parses a link without any upstream request, and /filter-values, which is the lookup that makes a filtered search valid in the first place. Printables is in Beta while coverage expands, at standard pricing.
Start pulling Printables data today.
Get a free API key, make your first request, and put public feedback to work in your own product or research workflow.
Used by developers at
Individual developers or teams — not official partnerships