# Make: Makezine Maker Project Scraper (`maximedupre/makezine`) Actor

Collect public Make: maker projects as structured rows with titles, authors, categories, tags, summaries, dates, tools, materials, and thumbnail links. Set a project limit or leave it empty to collect all available projects until the source is exhausted. Results open in the run dataset.

- **URL**: https://apify.com/maximedupre/makezine.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** For creators, Education, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.90 / 1,000 project metadata

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### 🛠️ Makezine projects for maker research

Makezine helps makers, researchers, and developers collect public Make: project metadata in structured rows. Each row can include the project title, authors, categories, tags, summary, publication date, tools, materials, thumbnail, and source page. Use the dataset to review maker projects, organize a catalog, or study public project data.

- Build a creative research list with **[Hobbies and crafts for adults](https://apify.com/maximedupre/makezine/examples/hobbies-and-crafts-for-adults)** from public project rows.
- Review **[Make projects](https://apify.com/maximedupre/makezine/examples/make-projects)** in a structured dataset with source pages and project metadata.
- Collect **[One hour art projects for adults](https://apify.com/maximedupre/makezine/examples/one-hour-art-projects-for-adults)** for a focused list of project titles and summaries.
- Group **[Useful craft ideas](https://apify.com/maximedupre/makezine/examples/useful-craft-ideas)** using the categories, tags, and summaries returned for each project.
- Browse **[Craft ideas for beginners](https://apify.com/maximedupre/makezine/examples/craft-ideas-for-beginners)** with source links and optional tools or materials when available.
- Explore **[Unique art projects for adults](https://apify.com/maximedupre/makezine/examples/unique-art-projects-for-adults)** through public project rows with authors and publication dates.

#### 📦 Makezine project data in each row

**What you get**

Each dataset row represents one public Make: project. It keeps the source title, source-listed authors, categories, tags, summary, publication date, project page, and thumbnail link when available. Tools and materials appear when Make: provides them.

**Source-backed fields**

Arrays preserve multiple authors, categories, tags, tools, and materials. Optional values are left out when the source does not provide them, so the dataset does not fill gaps with guesses.

#### ▶️ Run a public Makezine collection

**Quick start**

1. Start with the prefilled `maxItems` value of `10` for a small test.
2. Set a positive `maxItems` value when you want the Actor to stop after a chosen number of projects.
3. Leave `maxItems` empty to return all available public results until the source is exhausted.
4. Open the run's default dataset to browse or export the structured rows.

An empty limit lets the Actor continue through the available public Make: project pages. Older projects may not include tools or materials. A smaller limit reduces the amount of source work in a test run.

#### ⚙️ Input

**Input fields**

| Field | Type | What it does |
| --- | --- | --- |
| `maxItems` | integer | Optional maximum number of projects to collect. Leave it empty to return all available results until the source is exhausted. When set, the Actor stops after this many projects. |

**Example input**

This example is copied from the public input of the successful Hosted QA default-input run:

```json
{
  "maxItems": 10
}
```

#### 🧾 Output

**Run output**

The run output contains a link to the default dataset.

| Field | Type | What it does |
| --- | --- | --- |
| `datasetUrl` | string | Links to the collected Make: project rows in the run's default dataset. |

**Run output example**

```json
{
  "datasetUrl": "{{links.apiDefaultDatasetUrl}}/items?view=overview"
}
```

**Project rows**

The default dataset stores one object per public project. The same project-row shape can omit `tools` or `materials` when Make: does not provide those lists.

| Field | Type | What it does |
| --- | --- | --- |
| `projectId` | string | ID for matching the project with other records. |
| `title` | string | Project title from Make:. |
| `url` | string | Public Make: project page URL. |
| `authors` | array of strings | Authors listed for the project. |
| `categories` | array of strings | Categories listed for the project. |
| `tags` | array of strings | Tags listed for the project. |
| `summary` | string | Short project summary from the source. |
| `publishedAt` | string | Project publication date or time when provided. |
| `tools` | array of strings | Tools listed for the project when provided. This field may be absent. |
| `materials` | array of strings | Materials or parts listed for the project when provided. This field may be absent. |
| `thumbnailUrl` | string | Public project thumbnail URL when available. |

**Representative project row**

This genuine row comes from the successful current-beta run. It shows authors, categories, tags, tools, materials, and a thumbnail link together.

```json
{
  "projectId": "proximity-swipe-card-repair",
  "title": "Proximity Swipe Card Repair",
  "url": "https://makezine.com/projects/proximity-swipe-card-repair/",
  "authors": [
    "Graham Cattley"
  ],
  "categories": [
    "Computers & Mobile",
    "Technology"
  ],
  "tags": [
    "circuits",
    "featured",
    "Wireless"
  ],
  "summary": "Repair a damaged proximity swipe card.",
  "publishedAt": "2012-12-18T21:48:07-08:00",
  "thumbnailUrl": "https://i0.wp.com/makezine.com/wp-content/uploads/2013/11/kkkgs5vmmv2mvnhq.jpg?fit=620%2C465&ssl=1",
  "tools": [
    "Craft knife",
    "Jeweler’s loupe",
    "Locking tweezers – or “third hand” tool",
    "Rags",
    "Soldering iron"
  ],
  "materials": [
    "1 Proximity card",
    "1 Rubbing Alcohol"
  ]
}
```

**Project row without optional lists**

This genuine row from the same run has no `tools` or `materials` fields because those values were not provided for the project.

```json
{
  "projectId": "make-a-gripper-for-sharpwriter-pencil",
  "title": "Make a Gripper for Sharpwriter Pencil",
  "url": "https://makezine.com/projects/make-a-gripper-for-sharpwriter-pencil/",
  "authors": [
    "Lucas"
  ],
  "categories": [
    "Home"
  ],
  "tags": [
    "office",
    "Tools"
  ],
  "summary": "I love the Sharpwriter pencil from Paper Mate, but it's very skinny and hurts my hands after writing a lot. I could buy a gripper but where is the fun in that? So I made one.",
  "publishedAt": "2012-12-18T22:35:13-08:00",
  "thumbnailUrl": "https://i0.wp.com/makezine.com/wp-content/uploads/2012/12/W2TYwAFUgpNULSNr.jpg?fit=4000%2C3000&ssl=1"
}
```

#### 💳 Pricing

**Pay per saved project**

You are charged once for each project's metadata saved to your dataset. The current price is shown in the Actor's Pricing tab.

#### 🔌 Integrations

**Dataset access**

Open the run's default Apify dataset to browse or download structured project rows. Use the dataset link in the run output for downstream work.

**Video guide**

https://www.youtube.com/watch?v=bNACk1\_S\_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### What happens when maxItems is empty?

The Actor returns all available public Make: project results until the source is exhausted. Set a positive value when you want to stop earlier.

##### Are tools and materials present for every project?

No. Older or otherwise incomplete source pages may not list them. The Actor keeps these optional fields absent when Make: does not provide them.

##### Does the Actor collect full Make: tutorials?

No. It collects project metadata such as titles, authors, categories, tags, summaries, dates, tools, materials, and links. Full tutorial or article bodies are outside this Actor's scope.

##### Does it need a Make: account or subscription?

No customer-provided Make: credentials or subscription are needed for the public project workflow.

##### Can I run a small test before collecting more projects?

Yes. Set `maxItems` to a small positive number such as `10`. The Actor stops after that many projects.

##### How do I access the collected projects?

Open the dataset link in the run output. You can browse the rows there and use the available Apify dataset export options.

### 📝 Changelog

**0.0: Initial release**

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~makezine/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [Thingiverse Scraper](https://apify.com/maximedupre/thingiverse-scraper) collects public 3D models with creator, category, tag, image, license, and file metadata for 3D making research.
- [Behance Dribbble Scraper](https://apify.com/maximedupre/behance-dribbble-scraper) collects public portfolio projects and shots with creator, tag, image, and engagement data for visual project research.
- [DeviantArt Scraper](https://apify.com/maximedupre/deviantart-scraper) collects public artwork and creator data for visual idea research and public contact work.
- [Minne Handmade Marketplace Scraper](https://apify.com/maximedupre/minne) collects public handmade listings with Japanese titles, categories, prices, shops, and images for craft-market research.
- [Make: Makezine Maker Project Scraper](https://apify.com/jungle_synthesizer/makezine-maker-project-tutorial-scraper) collects Makezine project metadata with titles, authors, categories, tags, tools, materials, and thumbnails for a similar catalog use case.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `maxItems` (type: `integer`):

Maximum number of projects to collect. Leave it empty to return all available results until the source is exhausted. When set, the Actor stops after this many projects.

## Actor input object example

```json
{
  "maxItems": 10
}
```

# Actor output Schema

## `datasetUrl` (type: `string`):

The URL of the collected Make: project rows.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/makezine").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "maxItems": 10 }

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/makezine").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxItems": 10
}' |
apify call maximedupre/makezine --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maximedupre/makezine"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/EsgJxyxFCHiv3zSKE/builds/zHGC4tUwEAG7hGGS2/openapi.json
