{
  "openapi": "3.0.1",
  "info": {
    "title": "MakerWorld Scraper — 3D Models, Print Profiles & Reviews",
    "description": "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.",
    "version": "0.0",
    "x-build-id": "wLbfCXBxOfuZQVntY"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/unfenced-group~makerworld-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-unfenced-group-makerworld-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/unfenced-group~makerworld-scraper/runs": {
      "post": {
        "operationId": "runs-sync-unfenced-group-makerworld-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/unfenced-group~makerworld-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-unfenced-group-makerworld-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "searchQuery": {
            "title": "Search query",
            "type": "string",
            "description": "Keyword(s) to search MakerWorld models for, exactly as in the site's search box. Example: \"vase\", \"benchy\", \"gridfinity\". Leave empty to browse a category or feed instead."
          },
          "category": {
            "title": "Category",
            "enum": [
              "all",
              "900",
              "901",
              "902",
              "903",
              "100",
              "101",
              "103",
              "102",
              "104",
              "105",
              "500",
              "503",
              "505",
              "501",
              "506",
              "502",
              "504",
              "507",
              "200",
              "201",
              "202",
              "206",
              "204",
              "203",
              "208",
              "205",
              "207",
              "300",
              "301",
              "303",
              "304",
              "305",
              "306",
              "302",
              "307",
              "400",
              "401",
              "403",
              "402",
              "404",
              "405",
              "406",
              "600",
              "601",
              "602",
              "603",
              "604",
              "605",
              "1000",
              "1003",
              "1001",
              "1002",
              "1004",
              "700",
              "705",
              "703",
              "704",
              "702",
              "707",
              "701",
              "706",
              "800",
              "802",
              "801",
              "803",
              "804",
              "806",
              "805",
              "2000",
              "2001",
              "2002",
              "2003",
              "2004",
              "2005",
              "2006",
              "2007",
              "2008",
              "2009",
              "2010",
              "2011",
              "2012"
            ],
            "type": "string",
            "description": "Limit the search to one MakerWorld category or subcategory. Works with or without a search query. Example: \"800\" (Toys & Games) or \"401\" (Household › Decor).",
            "default": "all"
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "trending",
              "newest",
              "mostDownloaded",
              "mostLiked",
              "mostBoosted"
            ],
            "type": "string",
            "description": "Result order for search and category browsing, the same options as the site. Example: \"newest\" to monitor new uploads.",
            "default": "relevance"
          },
          "feed": {
            "title": "Feed",
            "enum": [
              "none",
              "trending",
              "exclusive"
            ],
            "type": "string",
            "description": "Also scrape one of MakerWorld's curated feeds: the Trending list or MakerWorld Exclusive models. Example: \"exclusive\".",
            "default": "none"
          },
          "creators": {
            "title": "Creators",
            "type": "array",
            "description": "Scrape every published model of these creators. Give the handle from the profile URL (makerworld.com/en/@handle) or the numeric user ID. Example: [\"BambuLab\"].",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "MakerWorld URLs to scrape: model pages (/models/12682-…), creator profiles (/@handle), category pages (/3d-models/901-…) or search pages (/search/models?keyword=…). Example: https://makerworld.com/en/models/12682-bambu-christmas-cabin",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItems": {
            "title": "Max models",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of models to save across all sources. Reviews do not count toward this limit. 0 means no limit. Example: 200.",
            "default": 50
          },
          "fetchDetails": {
            "title": "Full model details",
            "type": "boolean",
            "description": "Fetch each model's full record: description, all images, categories, license, rating, every print profile (printer, print time, weight, plates, filaments and colours), bill of materials and remix sources. Off returns the search-card fields only and is billed at the lower card price. Example: true.",
            "default": true
          },
          "includeCreatorStats": {
            "title": "Creator statistics",
            "type": "boolean",
            "description": "Add the creator's lifetime downloads, likes, collections, bio and links to full-detail rows (one cached request per creator, no extra charge). Example: true.",
            "default": true
          },
          "includeReviews": {
            "title": "Include ratings and comments",
            "type": "boolean",
            "description": "Save each model's ratings (score, print success, text, photos) and comments as separate rows with rowType \"rating\" or \"comment\". Billed per review row. Example: false.",
            "default": false
          },
          "maxReviewsPerModel": {
            "title": "Max reviews per model",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum ratings and comments saved per model when Include ratings and comments is on. Newest first. Example: 20.",
            "default": 20
          },
          "extendBeyondSearchLimit": {
            "title": "Go beyond the 485-result search limit",
            "type": "boolean",
            "description": "MakerWorld returns at most about 485 results per search. When on and you ask for more, the actor re-runs the search in the other sort orders to reach further models, with duplicates removed. Example: true.",
            "default": true
          },
          "onlyNewModels": {
            "title": "Only models not seen before",
            "type": "boolean",
            "description": "Skip models this actor already returned in earlier runs on your account, so scheduled runs deliver new uploads only. Skipped models are not billed. Example: false.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Not needed: the actor reads MakerWorld's public API directly and switches to Apify Proxy by itself if access is ever refused. Set a proxy only if you have a specific reason. Example: {\"useApifyProxy\": false}.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}