MakerWorld Scraper — 3D Models, Print Profiles & Reviews avatar

MakerWorld Scraper — 3D Models, Print Profiles & Reviews

Pricing

from $0.46 / 1,000 models

Go to Apify Store
MakerWorld Scraper — 3D Models, Print Profiles & Reviews

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

Unfenced Group

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

2 days ago

Last modified

Categories

Share

MakerWorld Scraper

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

ParameterTypeDefaultDescription
searchQuerystring(empty)Keyword(s) to search for, as in the site's search box.
categorystring"all"Category or subcategory ID, e.g. "800" Toys & Games or "401" Household › Decor.
sortBystring"relevance"relevance, trending, newest, mostDownloaded, mostLiked or mostBoosted.
feedstring"none"trending or exclusive to scrape a curated feed.
creatorsarray[]Creator handles (from makerworld.com/en/@handle) or numeric user IDs.
startUrlsarray[]Model, creator, category or search URLs from makerworld.com.
maxItemsinteger50Maximum models to save. 0 means unlimited. Reviews do not count.
fetchDetailsbooleantrueFull model record with all print profiles. Off returns search-card fields only, at the lower price.
includeCreatorStatsbooleantrueAdd creator lifetime totals, bio and links to full rows.
includeReviewsbooleanfalseSave ratings and comments as separate rows.
maxReviewsPerModelinteger20Maximum ratings and comments per model.
extendBeyondSearchLimitbooleantrueGo past MakerWorld's ~485-result search limit by combining sort orders.
onlyNewModelsbooleanfalseSkip models this actor already returned on your account.
proxyConfigurationobjectno proxyNot 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

FieldTypeDescription
rowTypestringAlways model for model rows.
idintegerMakerWorld model ID.
urlstringModel page URL.
titlestringModel title.
slugstringURL slug of the model.
coverUrlstringCover image URL.
imageUrlsarrayGallery image URLs.
tagsarrayTags set by the creator.
licensestringLicense, e.g. BY-NC-SA or Standard Digital File License.
isOfficialbooleanPublished by Bambu Lab.
isPrintablebooleanCan be sent to a printer straight from MakerWorld.
isExclusivebooleanMakerWorld Exclusive model.
isStaffPickedbooleanStaff pick.
isNsfwbooleanMarked not safe for work.
isPointRedeemablebooleanCan be redeemed with MakerWorld points.
isMakerLabCustomizedbooleanMade or customisable with a MakerLab tool.
likeCountintegerNumber of likes.
collectionCountintegerNumber of times saved to collections.
downloadCountintegerNumber of downloads.
printCountintegerNumber of prints started from MakerWorld.
commentCountintegerNumber of comments.
rawFileDownloadCountintegerDownloads of the raw model files (STL/STEP).
contestRankintegerContest rank (null if never entered).
modelFilesarrayRaw model files: name, type, sizeBytes, updatedAt.
createdAtstringUpload date (ISO 8601).
creatorIdintegerCreator's user ID.
creatorNamestringCreator display name.
creatorHandlestringCreator handle.
creatorUrlstringCreator profile URL.
creatorLevelintegerCreator level on MakerWorld (often null on search-card rows).
creatorVerifiedbooleanVerified creator.
creatorAcceptsMembershipsbooleanCreator offers paid memberships (often null on search-card rows).
detailLevelstringcard (search data) or full (full model record).
isNewbooleanTrue when this actor has not returned the model before on your account.
firstSeenAtstringWhen this actor first returned the model.
sourceModestringWhere the row came from: search, category, feed:Trending, feed:Exclusive, creator or model.
searchQuerystringSearch query or creator that produced the row (null otherwise).
positionintegerPosition in the source listing.
contentHashstringStable hash of ID and title, for change tracking.
sourcestringAlways makerworld.com.
scrapedAtstringScrape time (ISO 8601).

Only on search-card rows (fetchDetails: false)

FieldTypeDescription
trendingScorenumberMakerWorld's trending score (search, category and feed rows).
qualityScorenumberMakerWorld's design quality score (search, category and feed rows).
isPaidbooleanPaid model (creator-catalogue rows).
isAiGeneratedbooleanAI-generated content (creator-catalogue rows).
boostCountintegerBoosts received (creator-catalogue rows).
profileCountintegerNumber of print profiles (creator-catalogue rows).
defaultProfileIdintegerDefault print profile ID (creator-catalogue rows).
publishedAtstringPublication date (creator-catalogue rows).

With fetchDetails: true

FieldTypeDescription
modelKeystringMakerWorld's internal model key.
descriptionHtmlstringFull description as HTML.
descriptionTextstringFull description as plain text.
descriptionMarkdownstringFull description as Markdown.
videoUrlsarrayVideo URLs from the gallery.
categoriesarrayAll category names.
categorystringTop-level category.
categoryIdintegerTop-level category ID.
subcategorystringSubcategory (null if none).
subcategoryIdintegerSubcategory ID (null if none).
allowsRemixbooleanCreator allows remixes.
isAiGeneratedbooleanMarked as AI-generated content.
isPaidbooleanPaid model.
makerLabToolstringMakerLab tool used (null if none).
customizeCountintegerNumber of customisations made.
boostCountintegerNumber of boosts received.
ratingAveragenumberAverage rating across all print profiles, 1–5 (null if unrated).
ratingCountintegerTotal ratings across all print profiles.
profileCountintegerNumber of print profiles.
defaultProfileIdintegerID of the default print profile.
compatiblePrintersarrayAll printers covered by any print profile.
materialTypesarrayAll filament types used, e.g. PLA, PETG.
mainProfilePrintTimeHoursnumberPrint time of the main profile, in hours.
mainProfileWeightGramsnumberFilament weight of the main profile, in grams.
mainProfilePlateCountintegerPlates in the main profile.
mainProfileFilamentCountintegerFilaments in the main profile.
mainProfileNeedsAmsbooleanMain profile needs an AMS (multi-colour unit).
mainProfilePrinterstringPrinter the main profile was made for.
printProfilesarrayEvery print profile — fields below.
billOfMaterialsFilesarrayBill-of-materials files: name, url.
assemblyGuideFilesarrayAssembly guide files: name, url.
otherFilesarrayOther attached files: name, url.
remixOfarrayOriginal models this is a remix of: title, url, author, designId.
publishedAtstringFirst publication date (ISO 8601).
updatedAtstringLast update (ISO 8601).
contestNamestringContest the model was entered in (null if none).
creatorFollowersintegerCreator's follower count.
creatorTotalLikesintegerCreator's lifetime likes (with includeCreatorStats).
creatorTotalCollectionsintegerCreator's lifetime collection saves (with includeCreatorStats).
creatorTotalDownloadsintegerCreator's lifetime downloads (with includeCreatorStats).
creatorBiostringCreator bio (with includeCreatorStats).
creatorLinksarrayLinks on the creator profile (with includeCreatorStats).
FieldTypeDescription
printProfiles.profileIdintegerPrint profile ID.
printProfiles.titlestringProfile title.
printProfiles.isDefaultbooleanDefault profile.
printProfiles.printerstringPrinter the profile was sliced for.
printProfiles.nozzleDiameterMmnumberNozzle diameter in mm.
printProfiles.compatiblePrintersarrayPrinters this profile works on.
printProfiles.printTimeSecondsintegerEstimated print time in seconds.
printProfiles.printTimeHoursnumberEstimated print time in hours.
printProfiles.weightGramsnumberFilament weight in grams.
printProfiles.plateCountintegerNumber of build plates.
printProfiles.filamentCountintegerNumber of filaments.
printProfiles.colorCountintegerNumber of colours.
printProfiles.needsAmsbooleanNeeds an AMS.
printProfiles.filamentsarraytype, color (hex), grams, meters per filament.
printProfiles.layerHeightMmnumberLayer height in mm.
printProfiles.wallLoopsintegerWall loops.
printProfiles.infillDensitystringInfill density, e.g. 15%.
printProfiles.downloadCountintegerDownloads of this profile.
printProfiles.printCountintegerPrints of this profile.
printProfiles.ratingAveragenumberAverage rating of this profile.
printProfiles.ratingCountintegerRatings of this profile.
printProfiles.publishedAtstringProfile publication date.
printProfiles.updatedAtstringProfile last update.
printProfiles.authorNamestringProfile author (can differ from the model creator).
printProfiles.authorHandlestringProfile author handle.
printProfiles.isOfficialbooleanOfficial Bambu Lab profile.
printProfiles.coverUrlstringProfile cover image.
printProfiles.platesarrayPer plate: index, name, printTimeSeconds, weightGrams, filaments, thumbnailUrl.
printProfiles.summarystringProfile notes as plain text (null if none).

Rating and comment rows (includeReviews: true)

FieldTypeDescription
rowTypestringrating or comment.
reviewIdstringUnique ID (r… rating, c… comment).
modelIdintegerModel ID.
modelTitlestringModel title.
modelUrlstringModel URL.
profileIdintegerPrint profile that was rated (null for comments).
profileTitlestringTitle of that profile (null for comments).
scoreintegerStar score 1–5 (null for comments).
textstringReview or comment text.
textTranslatedstringMakerWorld's English translation (null if none).
printedSuccessfullybooleanReviewer reports a successful print (null for comments).
issuesarrayReported problems on low scores.
imageUrlsarrayPhotos attached by the reviewer.
likeCountintegerLikes on the review.
replyCountintegerReplies to the review.
isPinnedbooleanPinned by the creator.
authorNamestringReviewer display name.
authorHandlestringReviewer handle.
authorLevelintegerReviewer level.
createdAtstringPosted at (ISO 8601).
editedAtstringLast edit (null if never edited).
sourcestringAlways makerworld.com.
scrapedAtstringScrape 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 typePer 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
ResultsCardsFull 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 sizeTypical time
100 full recordsunder 1 minute
1,000 full records4–6 minutes
1,000 search cardsunder 1 minute
10,000 search cards5–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