Instructables Scraper avatar

Instructables Scraper

Try for free

3 days trial then $15.00/month - No credit card required now

Go to Store
Instructables Scraper

Instructables Scraper

epctex/instructables-scraper
Try for free

3 days trial then $15.00/month - No credit card required now

Retrieve all the information right away from Instructables. Get all the project and user detailed information without any limits or restrictions. Titles, descriptions, images, comments, steps, and detailed instructions about the projects are ready in a structural way. Easy usage, super fast!

Actor - Instructables Scraper

Instructables scraper

Since Instructables doesn't provide a good and free API, this actor should help you to retrieve data from it.

The Instructables data scraper supports the following features:

  • Search any keyword - You can search anything, filter anything and get everything!

  • Scrape categories, lists, and more - All the listing pages that contain projects are already supported.

  • Scrape projects of a user - Looking forward to all the projects of a specific user? No problem. Just type the URL and get them right away.

  • Scrape user detail - If you are looking for some data about a specific user, you can directly provide the URL of the user and retrieve all the information.

  • Scrape project detail - Retrieve the title, description, number of likes, number of comments, the steps, and many other attributes in a structured format.

  • Scrape comments of a project - Directly get any of the comments that have been committed into a project. No limits and extremely fast!

Bugs, fixes, updates, and changelog

This scraper is under active development. If you have any feature requests you can create an issue from here.

Input Parameters

The input of this scraper should be JSON containing the list of pages on Instructables that should be visited. Possible fields are:

  • search: (Optional) (String) Keyword that you want to search on Instructables.

  • startUrls: (Optional) (Array) List of Instructables URLs. You should only provide list, search, category, user, user projects, or project detail URLs.

  • includeComments: (Optional) (Boolean) This will add all the comments that Instructables provides into the project objects. Please keep in mind that the time and resources the actor uses will increase proportionally to the number of comments.

  • endPage: (Optional) (Number) Final number of page that you want to scrape. The default is Infinite. This applies to all search requests and startUrls individually.

  • maxItems: (Optional) (Number) You can limit scraped items. This should be useful when you search through the big lists or search results.

  • proxy: (Required) (Proxy Object) Proxy configuration.

  • extendOutputFunction: (Optional) (String) Function that takes a JQuery handle ($) as an argument and returns an object with data.

  • customMapFunction: (Optional) (String) Function that takes each object's handle as an argument and returns the object with executing the function.

This solution requires the use of Proxy servers, either your own proxy servers or you can use Apify Proxy.

Tip

When you want to scrape over a specific list URL, just copy and paste the link as one of the startUrl.

If you would like to scrape only the first page of a list then put the link for the page and have the endPage as 1.

With the last approach that is explained above you can also fetch any interval of pages. If you provide the 5th page of a list and define the endPage parameter as 6 then you'll have the 5th and 6th pages only.

Compute Unit Consumption

The actor is optimized to run blazing fast and scrape as many items as possible. Therefore, it forefronts all the detailed requests. If the actor doesn't block very often it'll scrape 100 listings in 2 minutes with ~0.15-0.35 compute units.

Instructables Scraper Input example

1{
2  "startUrls":[
3    "https://www.instructables.com/member/zaphodd42/",
4    "https://www.instructables.com/Make-PVC-Look-Like-Wood/",
5    "https://www.instructables.com/search/?q=project&projects=all",
6    "https://www.instructables.com/living/",
7    "https://www.instructables.com/member/zaphodd42/instructables/"
8  ],
9  "includeComments":false,
10  "maxItems":10,
11  "endPage":2,
12  "proxy":{
13    "useApifyProxy": true
14  }
15}

During the Run

During the run, the actor will output messages letting you know what is going on. Each message always contains a short label specifying which page from the provided list is currently specified. When items are loaded from the page, you should see a message about this event with a loaded item count and total item count for each page.

If you provide incorrect input to the actor, it will immediately stop with a failure state and output an explanation of what is wrong.

Instructables Export

During the run, the actor stores results into a dataset. Each item is a separate item in the dataset.

You can manage the results in any language (Python, PHP, Node JS/NPM). See the FAQ or our API reference to learn more about getting results from this Instructables actor.

Scraped Instructables Properties

The structure of each item in Instructables looks like this:

Project Detail

1{
2    "type": "project",
3    "url": "https://www.instructables.com/Print-a-Helicone-Tinkercad3D-Printing",
4    "title": "Print a Helicone! (Tinkercad/3D Printing)",
5    "isFeatured": true,
6    "numberOfViews": 13933,
7    "numberOfLikes": 34,
8    "numberOfComments": 6,
9    "categories": [
10        "Workshop",
11        "3D Printing"
12    ],
13    "steps": [
14        {
15            "title": "Introduction: Print a Helicone! (Tinkercad/3D Printing)",
16            "media": [
17                {
18                    "src": "https://content.instructables.com/FMX/73P5/KTMY2GVE/FMX73P5KTMY2GVE.png?auto=webp&fit=bounds&frame=1auto=webp&frame=1&height=300",
19                    "alt": "Print a Helicone! (Tinkercad/3D Printing)"
20                },
21                {
22                    "src": "https://content.instructables.com/FS6/S1LE/KTMY2H5W/FS6S1LEKTMY2H5W.jpg?auto=webp&fit=bounds&frame=1&height=1024&width=1024auto=webp&frame=1&height=300",
23                    "alt": "Print a Helicone! (Tinkercad/3D Printing)"
24                },
25                {
26                    "src": "https://content.instructables.com/FX7/OAVJ/KTMY2H5X/FX7OAVJKTMY2H5X.jpg?auto=webp&fit=bounds&frame=1&height=1024&width=1024auto=webp&frame=1&height=300",
27                    "alt": "Print a Helicone! (Tinkercad/3D Printing)"
28                }
29            ],
30            "body": "So a little while back I discovered the incredible 3D artist John Edmark - seriously, check his stuff out, it's incredible!! He'd invented something called a helicone - a tree like structure that resembles a helix but after being spun it transforms into a pinecone and then back again when spun the other way! I was pretty mesmerised by it and I reallywanted one!! Now, this is not an exact copy - it's certainly inspired by the original but if you want one exactly like John Edmark's, you can buy them on his website or through Amazon - I'm trying to challenge myself in terms of designing new models and trying to get into creating my own rather than buying wherever possible so I thought I'd see if I couldn't reverse engineer something similar from the photos and videos!If you just want the stls I made, feel free to jump ahead to the 'Print' step where I've included my stls but if you're interested in making your own or following my design process then I'll be running through that first :)You can also just download my STLs here on Thangs for free"
31        },
32        {
33            "title": "Step 1: Making the Branches - Creating the Overall Shape",
34            "media": [
35                {
36                    "src": "https://content.instructables.com/FEP/DPQR/KTMY2O18/FEPDPQRKTMY2O18.png?auto=webp&fit=bounds&frame=1auto=webp&frame=1&height=300",
37                    "alt": "Making the Branches - Creating the Overall Shape"
38                },
39                {
40                    "src": "https://content.instructables.com/FTW/XBBQ/KTMY2O1G/FTWXBBQKTMY2O1G.png?auto=webp&fit=bounds&frame=1auto=webp&frame=1&height=300",
41                    "alt": "Making the Branches - Creating the Overall Shape"
42                },
43                {
44                    "src": "https://content.instructables.com/FG5/0JVD/KTMY2O16/FG50JVDKTMY2O16.png?auto=webp&fit=bounds&frame=1auto=webp&frame=1&height=300",
45                    "alt": "Making the Branches - Creating the Overall Shape"
46                }
47            ],
48            "body": "Let's start with the most involved piece - the branches!These are made up of some very simple shapes really but I'm going to spread the process out over a few steps so I can include lots of pictures and screenshots - I find that pictures are significantly easier to follow than words with things like this!Let's start with the overall shape:Take a cylinder shape (20x20x2mm) and place it on the workplane Take a box shape (60x8x2mm) and align it with the cylinder so it runs across the centreTake a shape of your choice - I used hearts (25x27x2mm) and place one at each end of the box shapeYou've now created the basis for every branch you'll print!"
49        },
50        {
51            "title": "Step 2: Making the Branches - Creating the Holes! 1/2",
52            "media": [
53                {
54                    "src": "https://content.instructables.com/FYS/DKP0/KTMY2O20/FYSDKP0KTMY2O20.png?auto=webp&fit=bounds&frame=1auto=webp&frame=1&height=300",
55                    "alt": "Making the Branches - Creating the Holes! 1/2"
56                },
57                {
58                    "src": "https://content.instructables.com/FIP/KAKU/KTMY2O1W/FIPKAKUKTMY2O1W.png?auto=webp&fit=bounds&frame=1auto=webp&frame=1&height=300",
59                    "alt": "Making the Branches - Creating the Holes! 1/2"
60                },
61                {
62                    "src": "https://content.instructables.com/F4E/SGV0/KTMY2O1X/F4ESGV0KTMY2O1X.png?auto=webp&fit=bounds&frame=1auto=webp&frame=1&height=300",
63                    "alt": "Making the Branches - Creating the Holes! 1/2"
64                },
65                {
66                    "src": "https://content.instructables.com/FFW/1P2O/KTMY2O1Y/FFW1P2OKTMY2O1Y.png?auto=webp&fit=bounds&frame=1auto=webp&frame=1&height=300",
67                    "alt": "Making the Branches - Creating the Holes! 1/2"
68                },
69                {
70                    "src": "https://content.instructables.com/FU5/1ZUU/KTMY2O1Z/FU51ZUUKTMY2O1Z.png?auto=webp&fit=bounds&frame=1auto=webp&frame=1&height=300",
71                    "alt": "Making the Branches - Creating the Holes! 1/2"
72                }
73            ],
74            "body": "Next we'll create the holes in the branch pieces that allow it to slot onto the rod and which enable the transformation when it spins!I've again split this into 2 parts just so it's easier to follow!Take a cylinder (20x20x2mm) Place a cylindrical hole in the centre of your cylinder (10x10mm) Place a box shaped hole (20x3mm) aligned with the centre of the original cylinderMake a duplicate of the box hole and rotate it by 69 degrees before grouping the cylinder with all 3 holesCut away the larger sections that are left - I just used several box shaped holesYou should be left with 2 small arc shapes at this point"
75        }
76    ],
77    "author": {
78        "name": "ArKay894More by the author:bobb275ArKay894Amit_JainnasirakawaiicreaterJosiah Miller",
79        "image": "https://content.instructables.com/FQU/TLQ2/KLP60SY7/FQUTLQ2KLP60SY7.jpg?auto=webp&crop=1%3A1&frame=1&width=130",
80        "url": "https://www.instructables.com/member/ArKay894/"
81    }
82}

User Detail

1{
2    "type": "user",
3    "url": "https://www.instructables.com/member/zaphodd42/",
4    "name": "zaphodd42",
5    "image": "https://content.instructables.com/FPW/BD89/IBYX09JZ/FPWBD89IBYX09JZ.jpg?auto=webp&crop=1%3A1&frame=1&width=150",
6    "bio": "I live in suburban Pennsylvania with my wife and puppy. I pass the time building robots, photographing microbes and directing live TV.  I enjoy learning any new skill that helps me Make!  I enjoy even more passing on what I learned so others can Make as well.",
7    "joinedAt": "Joined February 11th, 2009",
8    "numberOfProjects": 77,
9    "numberOfViews": 3908220,
10    "numberOfComments": 387,
11    "numberOfFollowers": 455,
12    "location": "Pottstown, PA",
13    "achievements": [
14        {
15            "name": "100+ Comments",
16            "description": "Earned a bronze medal"
17        },
18        {
19            "name": "1M+ Views",
20            "description": "Earned a silver medal"
21        },
22        {
23            "name": "1+ Featured Instructable",
24            "description": "Earned a bronze medal"
25        },
26        {
27            "name": "Contest Winner",
28            "description": "First Prize in the  Before and After Contest"
29        },
30        {
31            "name": "Contest Winner",
32            "description": "Runner Up in the  PVC Challenge"
33        }
34    ]
35}

Contact

Please visit us through epctex.com to see all the products that are available for you. If you are looking for any custom integration or so, please reach out to us through the chat box in epctex.com. In need of support? devops@epctex.com is at your service.

Developer
Maintained by Community

Actor Metrics

  • 1 monthly user

  • 1 star

  • >99% runs succeeded

  • Created in Apr 2023

  • Modified 4 hours ago

Categories