MakerWorld Scraper — 3D Models, Print Profiles & Reviews
Pricing
from $0.46 / 1,000 models
MakerWorld Scraper — 3D Models, Print Profiles & Reviews
Scrape MakerWorld.com 3D models by keyword, category, feed, creator or URL. Get downloads, prints, likes, ratings, every print profile with printer, print time, weight, plates and filaments, creator stats, and optional ratings and comments. No login needed.
Pricing
from $0.46 / 1,000 models
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
MakerWorld Scraper

Extract 3D models from MakerWorld.com (Bambu Lab) by keyword, category, feed, creator or URL, with the richest field set available: downloads, prints, likes, ratings, every print profile with print time, weight, plates and filaments, and optional ratings and comments. No login or API key required.
Why this scraper?
🧩 Every way into MakerWorld
Search by keyword, browse any of 81 categories and subcategories, pull the Trending or MakerWorld Exclusive feeds, scrape a creator's full catalogue, or paste model, creator, category and search URLs.
📊 Complete popularity data
Downloads, prints, likes, collection saves, comments, boosts, raw-file downloads, average rating and rating count for every model, plus MakerWorld's trending and quality scores on search rows.
🖨️ Every print profile
Each model's print profiles with printer, compatible printers, nozzle, print time, filament weight, plate count, AMS requirement, layer height, walls, infill and the exact filament types, colours, grams and metres, down to each build plate.
⭐ Ratings and comments
Optional review rows with star score, print success, reported issues, text, English translation and photos.
👤 Creator profiles
Creator name, handle, level, verification, followers and lifetime downloads, likes and collections.
🔁 New-upload monitoring
Sort by newest and turn on Only models not seen before to receive just the new uploads on every scheduled run. Models you already have are skipped and never billed.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQuery | string | (empty) | Keyword(s) to search for, as in the site's search box. |
category | string | "all" | Category or subcategory ID, e.g. "800" Toys & Games or "401" Household › Decor. |
sortBy | string | "relevance" | relevance, trending, newest, mostDownloaded, mostLiked or mostBoosted. |
feed | string | "none" | trending or exclusive to scrape a curated feed. |
creators | array | [] | Creator handles (from makerworld.com/en/@handle) or numeric user IDs. |
startUrls | array | [] | Model, creator, category or search URLs from makerworld.com. |
maxItems | integer | 50 | Maximum models to save. 0 means unlimited. Reviews do not count. |
fetchDetails | boolean | true | Full model record with all print profiles. Off returns search-card fields only, at the lower price. |
includeCreatorStats | boolean | true | Add creator lifetime totals, bio and links to full rows. |
includeReviews | boolean | false | Save ratings and comments as separate rows. |
maxReviewsPerModel | integer | 20 | Maximum ratings and comments per model. |
extendBeyondSearchLimit | boolean | true | Go past MakerWorld's ~485-result search limit by combining sort orders. |
onlyNewModels | boolean | false | Skip models this actor already returned on your account. |
proxyConfiguration | object | no proxy | Not needed. The actor switches to Apify Proxy by itself if access is refused. |
With no input at all, the actor returns the Trending feed.
Output schema
Up to 111 fields per model. Fields MakerWorld does not publish for a model are returned as null or [] rather than omitted. Every row carries rowType (model, rating or comment) and detailLevel so mixed datasets are easy to split.
Always present on model rows
| Field | Type | Description |
|---|---|---|
rowType | string | Always model for model rows. |
id | integer | MakerWorld model ID. |
url | string | Model page URL. |
title | string | Model title. |
slug | string | URL slug of the model. |
coverUrl | string | Cover image URL. |
imageUrls | array | Gallery image URLs. |
tags | array | Tags set by the creator. |
license | string | License, e.g. BY-NC-SA or Standard Digital File License. |
isOfficial | boolean | Published by Bambu Lab. |
isPrintable | boolean | Can be sent to a printer straight from MakerWorld. |
isExclusive | boolean | MakerWorld Exclusive model. |
isStaffPicked | boolean | Staff pick. |
isNsfw | boolean | Marked not safe for work. |
isPointRedeemable | boolean | Can be redeemed with MakerWorld points. |
isMakerLabCustomized | boolean | Made or customisable with a MakerLab tool. |
likeCount | integer | Number of likes. |
collectionCount | integer | Number of times saved to collections. |
downloadCount | integer | Number of downloads. |
printCount | integer | Number of prints started from MakerWorld. |
commentCount | integer | Number of comments. |
rawFileDownloadCount | integer | Downloads of the raw model files (STL/STEP). |
contestRank | integer | Contest rank (null if never entered). |
modelFiles | array | Raw model files: name, type, sizeBytes, updatedAt. |
createdAt | string | Upload date (ISO 8601). |
creatorId | integer | Creator's user ID. |
creatorName | string | Creator display name. |
creatorHandle | string | Creator handle. |
creatorUrl | string | Creator profile URL. |
creatorLevel | integer | Creator level on MakerWorld (often null on search-card rows). |
creatorVerified | boolean | Verified creator. |
creatorAcceptsMemberships | boolean | Creator offers paid memberships (often null on search-card rows). |
detailLevel | string | card (search data) or full (full model record). |
isNew | boolean | True when this actor has not returned the model before on your account. |
firstSeenAt | string | When this actor first returned the model. |
sourceMode | string | Where the row came from: search, category, feed:Trending, feed:Exclusive, creator or model. |
searchQuery | string | Search query or creator that produced the row (null otherwise). |
position | integer | Position in the source listing. |
contentHash | string | Stable hash of ID and title, for change tracking. |
source | string | Always makerworld.com. |
scrapedAt | string | Scrape time (ISO 8601). |
Only on search-card rows (fetchDetails: false)
| Field | Type | Description |
|---|---|---|
trendingScore | number | MakerWorld's trending score (search, category and feed rows). |
qualityScore | number | MakerWorld's design quality score (search, category and feed rows). |
isPaid | boolean | Paid model (creator-catalogue rows). |
isAiGenerated | boolean | AI-generated content (creator-catalogue rows). |
boostCount | integer | Boosts received (creator-catalogue rows). |
profileCount | integer | Number of print profiles (creator-catalogue rows). |
defaultProfileId | integer | Default print profile ID (creator-catalogue rows). |
publishedAt | string | Publication date (creator-catalogue rows). |
With fetchDetails: true
| Field | Type | Description |
|---|---|---|
modelKey | string | MakerWorld's internal model key. |
descriptionHtml | string | Full description as HTML. |
descriptionText | string | Full description as plain text. |
descriptionMarkdown | string | Full description as Markdown. |
videoUrls | array | Video URLs from the gallery. |
categories | array | All category names. |
category | string | Top-level category. |
categoryId | integer | Top-level category ID. |
subcategory | string | Subcategory (null if none). |
subcategoryId | integer | Subcategory ID (null if none). |
allowsRemix | boolean | Creator allows remixes. |
isAiGenerated | boolean | Marked as AI-generated content. |
isPaid | boolean | Paid model. |
makerLabTool | string | MakerLab tool used (null if none). |
customizeCount | integer | Number of customisations made. |
boostCount | integer | Number of boosts received. |
ratingAverage | number | Average rating across all print profiles, 1–5 (null if unrated). |
ratingCount | integer | Total ratings across all print profiles. |
profileCount | integer | Number of print profiles. |
defaultProfileId | integer | ID of the default print profile. |
compatiblePrinters | array | All printers covered by any print profile. |
materialTypes | array | All filament types used, e.g. PLA, PETG. |
mainProfilePrintTimeHours | number | Print time of the main profile, in hours. |
mainProfileWeightGrams | number | Filament weight of the main profile, in grams. |
mainProfilePlateCount | integer | Plates in the main profile. |
mainProfileFilamentCount | integer | Filaments in the main profile. |
mainProfileNeedsAms | boolean | Main profile needs an AMS (multi-colour unit). |
mainProfilePrinter | string | Printer the main profile was made for. |
printProfiles | array | Every print profile — fields below. |
billOfMaterialsFiles | array | Bill-of-materials files: name, url. |
assemblyGuideFiles | array | Assembly guide files: name, url. |
otherFiles | array | Other attached files: name, url. |
remixOf | array | Original models this is a remix of: title, url, author, designId. |
publishedAt | string | First publication date (ISO 8601). |
updatedAt | string | Last update (ISO 8601). |
contestName | string | Contest the model was entered in (null if none). |
creatorFollowers | integer | Creator's follower count. |
creatorTotalLikes | integer | Creator's lifetime likes (with includeCreatorStats). |
creatorTotalCollections | integer | Creator's lifetime collection saves (with includeCreatorStats). |
creatorTotalDownloads | integer | Creator's lifetime downloads (with includeCreatorStats). |
creatorBio | string | Creator bio (with includeCreatorStats). |
creatorLinks | array | Links on the creator profile (with includeCreatorStats). |
Print profile fields (printProfiles[])
| Field | Type | Description |
|---|---|---|
printProfiles.profileId | integer | Print profile ID. |
printProfiles.title | string | Profile title. |
printProfiles.isDefault | boolean | Default profile. |
printProfiles.printer | string | Printer the profile was sliced for. |
printProfiles.nozzleDiameterMm | number | Nozzle diameter in mm. |
printProfiles.compatiblePrinters | array | Printers this profile works on. |
printProfiles.printTimeSeconds | integer | Estimated print time in seconds. |
printProfiles.printTimeHours | number | Estimated print time in hours. |
printProfiles.weightGrams | number | Filament weight in grams. |
printProfiles.plateCount | integer | Number of build plates. |
printProfiles.filamentCount | integer | Number of filaments. |
printProfiles.colorCount | integer | Number of colours. |
printProfiles.needsAms | boolean | Needs an AMS. |
printProfiles.filaments | array | type, color (hex), grams, meters per filament. |
printProfiles.layerHeightMm | number | Layer height in mm. |
printProfiles.wallLoops | integer | Wall loops. |
printProfiles.infillDensity | string | Infill density, e.g. 15%. |
printProfiles.downloadCount | integer | Downloads of this profile. |
printProfiles.printCount | integer | Prints of this profile. |
printProfiles.ratingAverage | number | Average rating of this profile. |
printProfiles.ratingCount | integer | Ratings of this profile. |
printProfiles.publishedAt | string | Profile publication date. |
printProfiles.updatedAt | string | Profile last update. |
printProfiles.authorName | string | Profile author (can differ from the model creator). |
printProfiles.authorHandle | string | Profile author handle. |
printProfiles.isOfficial | boolean | Official Bambu Lab profile. |
printProfiles.coverUrl | string | Profile cover image. |
printProfiles.plates | array | Per plate: index, name, printTimeSeconds, weightGrams, filaments, thumbnailUrl. |
printProfiles.summary | string | Profile notes as plain text (null if none). |
Rating and comment rows (includeReviews: true)
| Field | Type | Description |
|---|---|---|
rowType | string | rating or comment. |
reviewId | string | Unique ID (r… rating, c… comment). |
modelId | integer | Model ID. |
modelTitle | string | Model title. |
modelUrl | string | Model URL. |
profileId | integer | Print profile that was rated (null for comments). |
profileTitle | string | Title of that profile (null for comments). |
score | integer | Star score 1–5 (null for comments). |
text | string | Review or comment text. |
textTranslated | string | MakerWorld's English translation (null if none). |
printedSuccessfully | boolean | Reviewer reports a successful print (null for comments). |
issues | array | Reported problems on low scores. |
imageUrls | array | Photos attached by the reviewer. |
likeCount | integer | Likes on the review. |
replyCount | integer | Replies to the review. |
isPinned | boolean | Pinned by the creator. |
authorName | string | Reviewer display name. |
authorHandle | string | Reviewer handle. |
authorLevel | integer | Reviewer level. |
createdAt | string | Posted at (ISO 8601). |
editedAt | string | Last edit (null if never edited). |
source | string | Always makerworld.com. |
scrapedAt | string | Scrape time. |
Example record
{"rowType": "model","id": 13849,"url": "https://makerworld.com/en/models/13849-portable-cable-organizer-winder","title": "Portable Cable Organizer / Winder","slug": "portable-cable-organizer-winder","modelKey": "USb0aee2f62a8650","descriptionHtml": "<p>A portable cable organizer which is setup as an <strong>easy print-in-place</strong> and includes a knob on the side for conveniently winding up the cable wh…","descriptionText": "A portable cable organizer which is setup as an easy print-in-place and includes a knob on the side for conveniently winding up the cable wh…","descriptionMarkdown": "A portable cable organizer which is setup as an **easy print-in-place** and includes a knob on the side for conveniently winding up the cabl…","coverUrl": "https://makerworld.bblmw.com/makerworld/model/USb0aee2f62a8650/design/2023-08-29_2heg6p3b9yry.jpg","imageUrls": ["https://makerworld.bblmw.com/makerworld/model/USb0aee2f62a8650/design/2023-08-29_2heg6p3b9yry.jpg","https://makerworld.bblmw.com/makerworld/model/USb0aee2f62a8650/design/2023-08-29_qba9kp7yyk1t.jpg"],"videoUrls": [],"tags": ["organizer","printinplace","cord","usb","cordmanagement","cablemanagement"],"categories": ["Gadgets","Tools"],"category": "Tools","categoryId": 700,"subcategory": "Gadgets","subcategoryId": 705,"license": "BY","allowsRemix": true,"isOfficial": false,"isPrintable": true,"isExclusive": false,"isStaffPicked": true,"isNsfw": false,"isAiGenerated": false,"isPaid": false,"isPointRedeemable": false,"isMakerLabCustomized": false,"makerLabTool": null,"customizeCount": 0,"likeCount": 24306,"collectionCount": 71973,"downloadCount": 108493,"printCount": 92010,"commentCount": 11068,"rawFileDownloadCount": 14400,"boostCount": 5972,"ratingAverage": 4.86,"ratingCount": 9770,"contestName": null,"contestRank": null,"profileCount": 30,"defaultProfileId": 14065,"compatiblePrinters": ["A1 mini","P1S","P1P","X1","X1 Carbon","X1E"],"materialTypes": ["PLA","PETG"],"mainProfilePrintTimeHours": 1.71,"mainProfileWeightGrams": 43,"mainProfilePlateCount": 1,"mainProfileFilamentCount": 1,"mainProfileNeedsAms": false,"mainProfilePrinter": "P1S","printProfiles": [{"profileId": 23520,"title": "A1 Mini, All Knurled Sizes, 0.2mm layer, 3 walls, 15% infill","isDefault": false,"printer": "A1 mini","nozzleDiameterMm": 0.4,"compatiblePrinters": ["A1 mini","P1S","P1P","X1"],"printTimeSeconds": 20457,"printTimeHours": 5.68,"weightGrams": 129,"plateCount": 3,"filamentCount": 1,"colorCount": 1,"needsAms": false,"filaments": [{"type": "PLA","color": "#368CF9","grams": 129,"meters": 42.85}],"layerHeightMm": 0.2,"wallLoops": 3,"infillDensity": "15%","downloadCount": 28142,"printCount": 19345,"ratingAverage": 4.87,"ratingCount": 1917,"publishedAt": "2023-11-08T15:05:57Z","updatedAt": "2026-09-20T03:28:22Z","authorName": "squinn","authorHandle": "squinn","isOfficial": false,"coverUrl": "https://makerworld.bblmw.com/makerworld/model/USb0aee2f62a8650/design/2023-09-28_9c70edff1dfff8.jpg","plates": [{"index": 1,"name": "Small Knurled Sides","printTimeSeconds": 5910,"weightGrams": 38,"filaments": [{"type": "PLA","color": "#368CF9","grams": 38,"meters": 12.57}],"thumbnailUrl": "https://makerworld.bblmw.com/makerworld/model/USb0aee2f62a8650/25978202/instance/plate_1.png"}],"summary": "All three sizes of the portable cable winder on separate print plates, setup for"}],"billOfMaterialsFiles": [],"assemblyGuideFiles": [],"otherFiles": [],"modelFiles": [{"name": "Portable Cable Winder - Small.stl","type": "stl","sizeBytes": 1462584,"updatedAt": "2023-09-13T13:04:40Z"}],"remixOf": [],"createdAt": "2023-08-28T16:53:45Z","publishedAt": "2023-10-08T20:08:20Z","updatedAt": "2026-09-20T04:40:25Z","creatorId": 3485677045,"creatorName": "squinn","creatorHandle": "squinn","creatorUrl": "https://makerworld.com/en/@squinn","creatorFollowers": 15807,"creatorLevel": 30,"creatorVerified": true,"creatorAcceptsMemberships": true,"creatorTotalLikes": 140902,"creatorTotalCollections": 385922,"creatorTotalDownloads": 1151506,"creatorBio": "By day, a software engineer. By night, a hobbyist and wanna-be inventor. All the time, a dad of two crazy kids and husband of one amazing gal.\n\nInterested in commercial use? Either join here or my club on Printables (www.printables.com/@squinn)","creatorLinks": [],"detailLevel": "full","isNew": true,"firstSeenAt": "2026-09-20T05:22:40.698Z","sourceMode": "model","searchQuery": null,"position": 1,"contentHash": "a5b7cbcf2e128a09","source": "makerworld.com","scrapedAt": "2026-09-20T05:22:40.698Z"}
Example rating row
{"rowType": "rating","reviewId": "r16772","modelId": 13849,"modelTitle": "Portable Cable Organizer / Winder","modelUrl": "https://makerworld.com/en/models/13849-portable-cable-organizer-winder","profileId": 14426,"profileTitle": "Smooth-Sided Small, 0.2mm layer, 3 walls, 15% infill","score": 3,"text": "unfortunately the smooth sided small hinge was fused together I shall try a different one and update my review accordingly \nThe spinning bit in the middle worked great though","textTranslated": null,"printedSuccessfully": true,"issues": [],"imageUrls": ["https://makerworld.bblmw.com/makerworld/model/13849/14426/ratings/94f455f0-595f-11ee-bb4e-1bf86e426750.jpg","https://makerworld.bblmw.com/makerworld/model/13849/14426/ratings/94f7b150-595f-11ee-bb4e-1bf86e426750.jpg"],"likeCount": 49,"replyCount": 39,"isPinned": false,"authorName": "PrinttX Old Account","authorHandle": "PrinttXOldAccou","authorLevel": 19,"createdAt": "2023-09-22T15:49:30Z","editedAt": "2023-09-22T15:49:57Z","source": "makerworld.com","scrapedAt": "2026-09-20T05:22:41.024Z"}
Examples
Most downloaded organizers, full detail:
{"searchQuery": "organizer","sortBy": "mostDownloaded","maxItems": 200,"fetchDetails": true}
Toys & Games category, newest uploads, search-card data only:
{"category": "800","sortBy": "newest","maxItems": 500,"fetchDetails": false}
Specific models, a creator and a category URL, with ratings:
{"startUrls": [{ "url": "https://makerworld.com/en/models/12682-bambu-christmas-cabin" },{ "url": "https://makerworld.com/en/@BambuLab" },{ "url": "https://makerworld.com/en/3d-models/901-3d-printer-accessories" }],"includeReviews": true,"maxReviewsPerModel": 50,"maxItems": 100}
Daily feed of new uploads (schedule this):
{"sortBy": "newest","maxItems": 1000,"onlyNewModels": true,"fetchDetails": true}
💰 Pricing
From $0.49 per 1,000 results. You only pay for rows that are saved. Failed retries and skipped models are never charged.
| Row type | Per 1,000 |
|---|---|
Model, search-card data (fetchDetails: false) | $0.49 |
Model, full record with print profiles (fetchDetails: true) | $1.49 |
Rating or comment (includeReviews: true) | $0.49 |
| Results | Cards | Full records |
|---|---|---|
| 100 | ~$0.05 | ~$0.15 |
| 1,000 | ~$0.49 | ~$1.49 |
| 10,000 | ~$4.90 | ~$14.90 |
| 100,000 | ~$49.00 | ~$149.00 |
Flat-rate alternatives typically charge $29–$49/month regardless of usage.
Subscription tiers lower the rate further, down to $0.46 (cards and reviews) and $1.46 (full records) per 1,000 at the highest tier. Use Max models in the input to control your spend exactly.
Performance
| Run size | Typical time |
|---|---|
| 100 full records | under 1 minute |
| 1,000 full records | 4–6 minutes |
| 1,000 search cards | under 1 minute |
| 10,000 search cards | 5–8 minutes |
Known limitations
- MakerWorld returns at most about 485 results per search and sort order. With Go beyond the search limit on, the actor combines all six sort orders, which reached about 1,300 unique models for a single query in testing. For larger pulls, split by category or subcategory.
- Creator handles are resolved through search. If a handle cannot be found, use the numeric user ID from the creator's profile.
- Keyword search is fuzzy on MakerWorld's side, so an unusual query can still return loosely related models.
- Creator avatars and reviewer photos of people are not collected. Review photos of prints are.
Technical details
- Source: makerworld.com — Bambu Lab's 3D model platform, worldwide
- Coverage: all public models, 81 categories and subcategories, Trending and Exclusive feeds, creator catalogues
- New-model memory: KeyValueStore
makerworld-scraper-history, 365-day retention - Retry: automatic retry on network errors with exponential backoff
Rate this actor
If this scraper does its job, a short review on the Reviews tab helps other users find it. Something not working? Open an issue on the Issues tab instead — issues get fixed.
Need a custom scraper?
Unfenced Group builds Apify actors for any website — for free.
If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.
Get in touch: www.unfencedgroup.nl