Browse models without a keyword
Return models from one category or from all of Printables, ordered by trending, newest, rating, makes, views or likes. This is the endpoint for trend research: a keyword search answers "who made a thing like this", browsing answers "what is the community printing this week".
/browse-models Models https://api.fetchlayer.dev/printables/browse-models Headers
Authorization string required Bearer token — your FetchLayer API key.
Parameters
sort string optional trending, latest, rating, makes, views, or likes. (default: trending)
tagIds number[] optional Restrict to models carrying these tags, by id (max 20) — tag ids, not tag names.
categoryId string optional Restrict to one category, by id. Ids come from /filter-values.
materialIds number[] optional Restrict to models for these materials, by id (max 20). Ids come from /filter-values.
price string optional all, paid, or free. (default: all)
featured boolean optional Only models Printables has featured.
hasMake boolean optional Only models somebody has posted a printed copy of.
aiGenerated boolean optional Filter on whether the model was AI generated.
contestWinnersOnly boolean optional Only models that placed in a contest.
limit number optional Maximum models returned (max 2000), or -1 for everything available. (default: 30)
pages number optional Pages of results to collect in one request (max 100), or -1 for the maximum allowed.
cursor string optional Resume from a previous response's nextCursor.
delayMs number optional Milliseconds to wait between pages (max 30000).
format string optional json, or markdown to get the result rendered as text. (default: json)
timeoutMs number optional Per-request time limit in milliseconds (max 600000).
Response Fields
browse-models
Browse models without a keyword
filters object The browse filters applied, after defaults were resolved.
models object[] The matching models.
models[].id string Model id — the handle for /model-detail.
models[].name string | null Model title as published.
models[].url string Public Printables permalink for the model.
models[].publishedAt string | null When the current version was published.
models[].firstPublishedAt string | null When the model first went public, which can predate publishedAt.
models[].category object Category the designer filed it under, with its id and name.
models[].designer object Designer id, handle, display name, profile URL, avatar, verification and company flag.
models[].image object Cover image, with its absolute URL and dimensions. The full gallery is on /model-detail.
models[].stats object Downloads, likes, views, makes, comments, rating average and count, collections, file and image counts.
models[].price number | null Store price, or null for a free model.
models[].clubExclusive boolean True when the model sits behind a paid membership.
models[].latestContestPlacement object Most recent contest placing, when the model has one.
modelCount number Models in this response.
pagesScraped number Pages actually collected. Each page counts as one request against your plan.
nextCursor string | null Pass back as cursor to continue, or null when the listing is exhausted.
hasNextPage boolean Whether more results are available beyond this response.
notes string[] Caveats about this specific result — a truncated walk, a listing that may be incomplete, an upstream limit. Read it before treating a result set as complete.
requestedUrl string The Printables page this result corresponds to.
scrapedAt string ISO 8601 timestamp of when the data was collected.
resultType string Which shape this response is, e.g. model-search or contest-detail.
blocked boolean Always false on a successful response.
Request
curl -X POST "https://api.fetchlayer.dev/printables/browse-models" \
-H "Authorization: Bearer ss-your-key" \
-H "Content-Type: application/json" \
-d '{"sort":"trending","categoryId":"1","price":"free","limit":50,"pages":2}'Response
{
"resultType": "model-browse",
"modelCount": 50,
"pagesScraped": 2,
"hasNextPage": true,
"notes": [],
"filters": {
"sort": "trending",
"categoryId": "1",
"price": "free"
},
"models": []
}