Thingiverse Scraper avatar

Thingiverse Scraper

Pricing

from $0.60 / 1,000 item processeds

Go to Apify Store
Thingiverse Scraper

Thingiverse Scraper

Scrape Thingiverse models, creators, tags, licenses, likes, makes, file counts, and 3D-print metadata from searches or model URLs.

Pricing

from $0.60 / 1,000 item processeds

Rating

0.0

(0)

Developer

Automation Lab

Automation Lab

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

2

Monthly active users

3 days ago

Last modified

Categories

Share

Scrape public Thingiverse search results and model detail pages into a clean Apify dataset.

Use this actor to collect 3D printable model metadata such as model names, URLs, creators, tags, thumbnails, likes, collects, comments, makes, file counts, remix counts, licenses, descriptions, and creation dates.

What does Thingiverse Scraper do?

Thingiverse Scraper turns public Thingiverse model pages into structured data.

It can:

  • 🔎 Search Thingiverse by keyword.
  • 🔗 Scrape specific Thingiverse model URLs.
  • 🧑‍🎨 Extract creator profile metadata.
  • 🏷️ Collect tags and license information.
  • 📈 Capture engagement proxies such as likes, collects, comments, and makes.
  • 🖼️ Save thumbnails and preview image URLs.
  • 🧾 Export results to JSON, CSV, Excel, XML, or via API.

Who is it for?

This actor is useful for:

  • 3D-print marketplace sellers researching printable product ideas.
  • Maker teams monitoring popular Thingiverse model categories.
  • Hardware startups tracking printable accessory trends.
  • Product researchers comparing niches such as phone stands, Raspberry Pi cases, miniatures, or printer calibration models.
  • Data teams building dashboards for 3D model popularity and creator activity.

Why use this actor?

Thingiverse is a large public repository of printable designs, but manually checking search results and detail pages is slow.

This actor helps you:

  • Find model ideas faster.
  • Compare creators and engagement signals.
  • Track tags and license terms for research.
  • Build recurring monitoring jobs.
  • Feed model metadata into spreadsheets, BI tools, or enrichment pipelines.

What data can you extract?

FieldDescription
thingIdThingiverse model ID
nameModel title
urlPublic Thingiverse model URL
searchQueryKeyword that produced the result
sourceTypesearch or thing
position1-based result rank within the originating search query
creatorCreator ID, name, URL, image, verification flags, and profile counts when available
likeCountPublic like count
collectCountPublic collect count
commentCountPublic comment count
makeCountPublic make count from detail payloads
fileCountNumber of public files from detail payloads
remixCountRemix count from detail payloads
licensePublic license text
tagsModel tags
descriptionTextCleaned model description text
thumbnailThumbnail image URL
previewImagePreview image URL
createdAtThingiverse creation timestamp
scrapedAtTimestamp when the actor saved the record

How much does it cost to scrape Thingiverse?

This actor uses pay-per-event pricing.

  • A small start event is charged once per run.
  • A result event is charged for each model record saved.
  • You can keep costs predictable with maxItems.

Before publishing, live pricing is calculated from cloud run costs and shown on the Apify Store pricing tab.

Input options

You can provide one or more of the following:

  • searchQueries — keywords such as benchy, phone stand, or raspberry pi case.
  • startUrls — Thingiverse search URLs or model URLs.
  • thingUrls — direct model URLs or numeric Thingiverse thing IDs.
  • maxItems — maximum records to save.
  • sort — search sorting mode.
  • includeDetails — fetch richer model detail payloads.

Example input

{
"searchQueries": ["benchy", "phone stand"],
"maxItems": 50,
"sort": "popular",
"includeDetails": true
}

Scrape a specific Thingiverse model

{
"thingUrls": ["https://www.thingiverse.com/thing:763622"],
"maxItems": 1,
"includeDetails": true
}

Scrape a Thingiverse search URL

{
"startUrls": [
{ "url": "https://www.thingiverse.com/search?q=benchy&type=things&sort=relevant" }
],
"maxItems": 20,
"includeDetails": true
}

Example output

{
"searchQuery": "benchy",
"sourceType": "search",
"position": 1,
"thingId": 763622,
"name": "#3DBenchy - The jolly 3D printing torture-test by CreativeTools.se",
"url": "https://www.thingiverse.com/thing:763622",
"creator": {
"id": 1336,
"name": "CreativeTools",
"url": "https://www.thingiverse.com/CreativeTools"
},
"likeCount": 90836,
"collectCount": 138061,
"commentCount": 994,
"fileCount": 24,
"license": "Creative Commons - Public Domain Dedication",
"tags": ["Benchy", "calibration", "test"],
"scrapedAt": "2026-06-20T19:49:35.601Z"
}

Step-by-step usage

  1. Open the actor on Apify.
  2. Add search terms, model URLs, or Thingiverse search URLs.
  3. Set maxItems to the number of model records you need.
  4. Keep includeDetails enabled for tags, license, file counts, and descriptions.
  5. Run the actor.
  6. Download the dataset or connect it to your workflow.

Tips for better results

  • Use specific product nouns such as phone stand, desk organizer, or raspberry pi case.
  • Use popular sorting when you want demand signals.
  • Use newest sorting when monitoring fresh uploads.
  • Keep maxItems low for quick tests.
  • Use direct model URLs when you only need a known model.

Integrations

You can connect the dataset to:

  • Google Sheets for model research lists.
  • Airtable for maker product pipelines.
  • BI dashboards for engagement tracking.
  • Webhooks for recurring monitoring.
  • AI tools that summarize popular tags and model niches.

API usage with Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/thingiverse-scraper').call({
searchQueries: ['benchy'],
maxItems: 20,
includeDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

API usage with Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('automation-lab/thingiverse-scraper').call(run_input={
'searchQueries': ['benchy'],
'maxItems': 20,
'includeDetails': True,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

API usage with cURL

curl "https://api.apify.com/v2/acts/automation-lab~thingiverse-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"searchQueries":["benchy"],"maxItems":20,"includeDetails":true}'

MCP usage

Use Apify MCP with this actor-specific server URL:

https://mcp.apify.com/?tools=automation-lab/thingiverse-scraper

Claude Code

$claude mcp add --transport http apify-thingiverse "https://mcp.apify.com/?tools=automation-lab/thingiverse-scraper"

Claude Desktop, Cursor, and VS Code

Add this server to the MCP JSON configuration in Claude Desktop, Cursor, or VS Code:

{
"mcpServers": {
"apify-thingiverse": {
"url": "https://mcp.apify.com/?tools=automation-lab/thingiverse-scraper"
}
}
}

Example prompts:

  • "Scrape the top 25 Thingiverse results for phone stand models."
  • "Extract metadata for this Thingiverse model URL and summarize its license and tags."
  • "Compare popular Thingiverse Raspberry Pi case models by likes, collects, and file counts."

How this actor works

Thingiverse renders search pages with a browser app. The actor starts one browser session, uses the public Thingiverse view API used by the website, and saves normalized model records to the default dataset. Transient API failures retry with bounded backoff, an expired anonymous session is refreshed once, and detailed search requests run with limited concurrency while records remain in deterministic query/result order.

Data quality notes

Counts are public Thingiverse counters at the time of the run. They may change later. Some optional detail fields depend on the public model payload and may be missing for deleted, moderated, private, or restricted models. Search position is the model's 1-based rank within its originating query; ranks restart at 1 for each query and can contain gaps when a model was already saved from an earlier input.

Troubleshooting

If a run returns fewer models than expected:

  • Increase maxItems.
  • Try a broader search query.
  • Use popular or relevant sorting.
  • Confirm that direct URLs are public Thingiverse model pages.

Malformed or unsupported direct inputs are reported as warnings. A private, removed, moderated, or unavailable direct model is skipped so remaining direct models and searches can continue. The run fails clearly instead of reporting a successful empty dataset when none of the valid inputs produce a model.

Data handling, dependencies, and support

The actor sends only your public search terms and model identifiers to Thingiverse's public website API. It does not use AI providers, request account credentials, or retain a separate copy of inputs or results. Run datasets, key-value stores, and logs follow the retention settings of your Apify account and can be deleted with Apify storage controls.

Thingiverse availability and public payloads are an external dependency. If a documented workflow fails after you check the troubleshooting steps, use the Actor's Issues tab in Apify Console and include a sanitized input and run ID. Never include credentials or private data in a support report.

This actor extracts public metadata. You are responsible for using the data in a way that respects Thingiverse terms, copyright, licenses, privacy, and applicable laws. Do not use scraped data for spam, abusive automation, or license violations. Thingiverse is named only to identify the public source; this Actor is not affiliated with or endorsed by Thingiverse.

Other Automation Lab actors that can complement Thingiverse Scraper:

  • automation-lab/kickstarter-scraper for hardware and maker campaign research.
  • automation-lab/etsy-scraper for handmade and printable product market research.
  • Future MakerWorld, Printables, and 3D model marketplace scrapers can be used for cross-platform comparison.

FAQ

Can I scrape only one Thingiverse model?

Yes. Put the model URL in thingUrls and set maxItems to 1.

Can I monitor new models?

Yes. Schedule the actor and use sort: "newest" with a focused query.

Does it download STL files?

No. The actor extracts public model metadata. It does not download model files.

Does it require a Thingiverse login?

No. It uses public pages and public view access used by the website.

Why do some fields appear empty?

Some models do not expose every field, and search-only runs may have fewer fields when includeDetails is disabled.