# Wikimedia Commons WikiProjects Scraper (`parseforge/wikimedia-commons-wikiprojects-scraper`) Actor

Scrapes WikiProjects from Wikimedia Commons using the public category members API. Returns each WikiProject as a flat row with page ID, namespace, and title. Supports optional search filtering and bulk export up to 1,000,000 items.

- **URL**: https://apify.com/parseforge/wikimedia-commons-wikiprojects-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.62 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### Wikimedia Commons WikiProjects Scraper

**Scrape WikiProjects from Wikimedia Commons, filtered by search term, up to a million per run.** Each WikiProject comes with its page ID, namespace, and title. No login or API key. Export to CSV, JSON, Excel, or XML.

Wikimedia Commons hosts thousands of WikiProjects that coordinate contributions around specific topics, but there is no built-in way to export a structured list of them. This actor reads the public category members API directly, lets you filter by a search term, and returns every matching WikiProject in one fixed schema.

| Who uses it | What they scrape Wikimedia Commons for |
|---|---|
| Digital archivists | Catalog which WikiProjects exist for a given subject area. |
| Wikimedia community organizers | Audit active and inactive WikiProjects to plan outreach. |
| Researchers in open knowledge | Analyze the topical distribution of volunteer coordination efforts. |
| Tool builders | Feed a live list of WikiProjects into a dashboard or bot. |

### What it does

This Actor collects WikiProjects from Wikimedia Commons by reading the category members API and returns each one as a flat row with its page ID, namespace, and title.

- **Search filter:** supply an optional search term to return only WikiProjects whose title contains that string.
- **Bulk export:** retrieve up to 1,000,000 WikiProjects in a single run and download as CSV, JSON, Excel, or XML.
- **Zero authentication:** the public Wikimedia Commons API requires no login, app registration, or API key.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with Wikimedia Commons data

**Build a WikiProject directory.**

A community portal maintainer runs the actor with no search term to get every WikiProject, then publishes the list as a navigable index.

**Map geographic coverage.**

A researcher filters by country names to see which regions have active WikiProjects and identifies gaps in representation.

**Populate a maintenance bot.**

A tool builder scrapes the full list daily and feeds it into a bot that checks each project page for stale activity.

**Analyze topical trends.**

A data analyst extracts all WikiProjects, categorizes them by subject, and tracks how volunteer focus shifts over time.

### Why choose this scraper

| | What you get |
|---|---|
| **No API key needed** | The Wikimedia Commons category API is fully public; start scraping immediately. |
| **Structured output** | Every WikiProject is returned as a flat row with pageid, ns, and title, ready for analysis. |
| **Search precision** | Filter by title substring to isolate WikiProjects for a specific topic or language. |
| **Scalable volume** | Paid users can pull up to a million items; free users get a 10-item preview. |

### What a Wikimedia Commons record looks like

Every record returns as one flat JSON row. Here is a real one from a run:

```json
{
 "title": "Commons:WikiProject",
 "url": "https://commons.wikimedia.org/wiki/Commons%3AWikiProject",
 "pageid": 12650413,
 "namespace": 4,
 "scrapedAt": "2026-09-06T17:39:25.509Z"
}
```

Every value above comes from a real run. A field a record does not have comes back as `null`.

### Configure the run

Drive the Actor with an optional search term, and the filter runs as each WikiProject is read so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

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

A larger pull:

```json
{
 "maxItems": 200
}
```

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [Wikimedia Commons WikiProjects Scraper](https://apify.com/parseforge/wikimedia-commons-wikiprojects-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to Wikimedia Commons through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/wikimedia-commons-wikiprojects-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Check your search term. If it is too specific or contains a typo, no WikiProject titles will match. Try running without a search term first to see the full list.

**The actor returns fewer items than I expected.**

The free tier is limited to 10 items. If you are on a paid plan, verify your maxItems setting. Also, the Wikimedia Commons category may not contain as many WikiProjects as you assumed.

**I get an error or timeout during the run.**

The Wikimedia Commons API is generally stable, but occasional downtime can occur. Retry the run after a few minutes. If the problem persists, reduce the maxItems value to lower the load.

**The search filter is not returning expected WikiProjects.**

The filter matches the title substring exactly as it appears in the API. Try a shorter or alternative form of the term, and check the sample output for the exact title format used on Commons.

### FAQ

| Question | Answer |
|---|---|
| Do I need a Wikimedia account or API key to use this scraper? | No. The actor calls the public Wikimedia Commons API, which requires no authentication, app registration, or API key. |
| What data does each WikiProject row contain? | Each row includes the page ID, namespace, and title of the WikiProject. The exact fields are shown in the sample output on the actor's page. |
| Can I filter WikiProjects by a specific topic? | Yes. Use the optional search term input to return only WikiProjects whose title contains the string you provide, such as 'Photography' or 'Maps'. |
| How many WikiProjects can I scrape in one run? | Free users can scrape up to 10 items as a preview. Paid Apify users can set a higher limit, up to 1,000,000 items per run. |
| What output formats are supported? | You can export the dataset in CSV, JSON, Excel, or XML format from the Apify console or via API. |
| Does this actor scrape the full content of each WikiProject page? | No. It collects the list of WikiProjects from the category members API. It returns the page ID, namespace, and title, not the full page body text. |
| Is this an official Wikimedia tool? | No. This is a third-party scraper built on Apify that uses the public Wikimedia Commons API. It is not affiliated with or endorsed by the Wikimedia Foundation. |
| Can I schedule this actor to run automatically? | Yes. Apify supports scheduled runs, so you can set the actor to scrape the WikiProjects list daily, weekly, or at any custom interval. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

### Pricing

This Actor uses **pay-per-result** pricing: **$0.004 per result** collected. You are billed only for the results you receive, so a run that returns nothing costs nothing.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Wikimedia Foundation, Inc. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

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

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `search` (type: `string`):

Optional search term to filter WikiProjects by title.

## Actor input object example

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

# Actor output Schema

## `results` (type: `string`):

Complete dataset of all scraped records.

# 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("parseforge/wikimedia-commons-wikiprojects-scraper").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("parseforge/wikimedia-commons-wikiprojects-scraper").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 parseforge/wikimedia-commons-wikiprojects-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/wikimedia-commons-wikiprojects-scraper"
        }
    }
}

```

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/9tmLG0SzyibRvOvYp/builds/MckZFW7DmJgKbBttS/openapi.json
