# Coursera Scraper  - Low-cost💲🔥🎓📚 (`delectable_incubator/coursera-scraper-low-cost`) Actor

Scrape Coursera courses by keyword 📚🎓 with a powerful education scraper. Extract course titles, ratings, durations, difficulty levels, and course URLs for any topic. Ideal for e-learning research, skill trend analysis, education platforms, and structured online course datasets 📊🚀

- **URL**: https://apify.com/delectable\_incubator/coursera-scraper-low-cost.md
- **Developed by:** [Prime Scrape](https://apify.com/delectable_incubator) (community)
- **Categories:** Lead generation, Automation, Integrations
- **Stats:** 2 total users, 1 monthly users, 75.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.00005 / actor start

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

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

<p align="center"> <img src="https://i.ibb.co/jkNS73wX/readme.png" alt="Advanced Coursera Course Scraper" width="100%"> </p>

---

###  Advanced Coursera Course Scraper 🎓🔎✨📚 

The Advanced Coursera Course Scraper is a powerful and scalable Apify Actor designed to extract structured course listings directly from Coursera.

It enables e-learning analysis, skill trend monitoring, educational research, lead generation, course intelligence, and structured dataset creation from one of the world’s leading online learning platforms.

---

### 🎯 What This Scraper Does

Simply provide one or more course search keywords and the scraper handles everything automatically.

✅ Extracts structured course listings from Coursera

✅ Supports multiple search keywords

✅ Handles pagination automatically

✅ Applies maxitems limits per keyword

✅ Supports sorting by Best Match or Newest

✅ Collects ratings, difficulty levels, and skills

✅ Extracts course duration and provider information

✅ Generates clean and structured datasets

✅ Ready for education & analytics workflows

✅ Export-ready output format

---

### 📊 Data Extracted

🎓 Course Listing Information

| Field                 | Description                       |
| --------------------- | --------------------------------- |
| 🆔 `id`               | Unique Coursera course identifier |
| 📝 `name`             | Course title                      |
| ⭐ `avg_rating`        | Average course rating             |
| 👥 `num_ratings`      | Number of ratings                 |
| 🏆 `difficulty_level` | Difficulty level                  |
| ⏳ `duration`          | Estimated course duration         |
| 💳 `is_free`          | Free or paid course               |
| 🏢 `partners`         | Course provider or institution    |
| 📚 `skills`           | Skills taught in the course       |
| 🖼️ `image_url`       | Course thumbnail image            |
| 🔗 `course_url`       | Direct Coursera course URL        |


---

### 🛠 How to Use

1️⃣ Configure Input  

Provide one or more Coursera search keywords:

````

{
"keywords": \[
"artificial intelligence",
"machine learning"
],
"maxitems": 40,
"sort\_by": "Best match"
}

```

2️⃣ Run the Actor

• Loads course listings for each keyword

• Automatically paginates search results

• Extracts structured course data

• Applies sorting preferences

• Stops when maxitems is reached per keyword

• Collects ratings, providers, and skills


3️⃣ Export the Dataset

Download your results in multiple formats:

✅ JSON

✅ CSV

✅ Excel

✅ XML

✅ HTML


---

### ⚙️ Input Configuration

#### 📥 Input Example

```

{
"keywords": \[
"artificial intelligence",
"machine learning"
],
"maxitems": 40,
"sort\_by": "Best match"
}

```



#### Input Fields

| Field      | Type    | Description                                      |
| ---------- | ------- | ------------------------------------------------ |
| `keywords` | array   | List of Coursera search keywords                 |
| `maxitems` | integer | Maximum number of courses to extract per keyword |
| `sort_by`  | string  | Sorting option (`Best match` or `Newest`)        |

---


### 📤 Output Example

```

{
"id": "course~daG-a-O1EeijKBISCWxf6g",
"name": "AI For Everyone",
"avg\_rating": 4.792651715611851,
"num\_ratings": 46106,
"difficulty\_level": "BEGINNER",
"duration": "ONE\_TO\_FOUR\_WEEKS",
"is\_free": "Paid",
"partners": \[
"DeepLearning.AI"
],
"skills": \[
"Artificial Intelligence",
"Machine Learning",
"Generative AI",
"Deep Learning"
],
"image\_url": "https://s3.amazonaws.com/coursera-course-photos/course-logo.png",
"course\_url": "https://www.coursera.org/learn/ai-for-everyone"
}

````

---

### 📊 Output explanation

| Use Case                      | Description                                    |
| ----------------------------- | ---------------------------------------------- |
| 🎓 Learning & Skill Discovery | Discover trending educational content          |
| 📊 Course Market Research     | Analyze ratings, popularity, and providers     |
| 🧠 Skill Intelligence         | Track emerging skills and technologies         |
| 📈 Educational Analytics      | Build structured e-learning datasets           |
| 🤖 Automation Pipelines       | Integrate course data into workflows & systems |

---

### 🌍 Why Use This Scraper? 

🚀 Extract Coursera courses at scale

📊 Clean and structured educational datasets

🎓 Track trending courses and learning paths

🌍 Analyze online learning trends worldwide

⚡ Fully automated pagination & extraction

🧠 Ideal for education intelligence workflows

🤖 Automation-ready for analytics pipelines

---

### ❓ FAQ
How does this scraper work?

The scraper queries Coursera search results using your keywords, then extracts structured course data including ratings, providers, skills, duration, and direct course links.

How accurate is the data?

Data is collected directly from live Coursera course listings. Every run retrieves fresh results directly from the platform.

Can I schedule this to run automatically?

Yes. Use the Apify scheduler to run this actor daily, weekly, or monthly to monitor new courses, rating changes, or trending skills.

Is it legal to collect this data?

Yes. Publicly accessible course information can be collected for research and analytics purposes. You are responsible for complying with applicable laws and platform terms.

Can I use this data for commercial purposes?

Yes. The extracted data can be used for analytics, lead generation, educational insights, and commercial applications.

Do I need a paid plan?

Free users can collect limited results per run. Paid Apify plans allow significantly larger extraction volumes.

What happens if the scraper fails?

The scraper includes automatic retry mechanisms and error handling to maximize extraction reliability.

How long does a run take?

Small runs usually finish within seconds. Larger keyword lists and high maxitems configurations may take several minutes.

What export formats are supported?

You can export results as JSON, CSV, Excel, XML, and HTML. Data can also be connected to external tools through Apify integrations.

---

### 🚀 How to Use

1️⃣ Sign up — Create a free Apify account

2️⃣ Find the tool — Search for "Advanced Coursera Course Scraper" in the Apify Store

3️⃣ Set your search — Enter one or more keywords or subjects

4️⃣ Run it — Click "Start" and wait for results

5️⃣ Export data — Download as JSON, CSV, Excel, XML, or HTML

---

### ⚠️ Disclaimer

This tool is an independent solution and is not affiliated with, endorsed by, or sponsored by Coursera.

---

### 💸 Pricing

This scraper runs on a **pay per events subscription model**.

You only pay for **successful runs**.

💳 **Price:** $0.99 / 1000 results

---

### Related Actors 

If you're interested in other Education, Research, Social Media, or Analytics scraping solutions, explore more tools:

(Coming soon)

---

### 📬 Support

⭐⭐⭐⭐⭐ Leave a 5-star rating if you like this tool

---

### 🌍 PrimeScrape

Built for scalable web data extraction & automation

Contact for custom scraping solutions or enterprise requests via Apify or by email.

# Actor input Schema

## `keywords` (type: `array`):

One or more keywords or subjects to search courses for on Coursera.

Examples:
• artificial intelligence
• machine learning
• data science
• web development
## `maxitems` (type: `integer`):

Maximum number of results you want to scrape per keyword 📊
## `sort_by` (type: `string`):

Select a Sort type 🌍

## Actor input object example

```json
{
  "keywords": [
    "Artificial intelligence",
    "Cloud"
  ],
  "maxitems": 40,
  "sort_by": "Best match"
}
````

# Actor output Schema

## `overview` (type: `string`):

No description

# 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 = {
    "keywords": [
        "Artificial intelligence",
        "Cloud"
    ],
    "maxitems": 40,
    "sort_by": "Best match"
};

// Run the Actor and wait for it to finish
const run = await client.actor("delectable_incubator/coursera-scraper-low-cost").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 = {
    "keywords": [
        "Artificial intelligence",
        "Cloud",
    ],
    "maxitems": 40,
    "sort_by": "Best match",
}

# Run the Actor and wait for it to finish
run = client.actor("delectable_incubator/coursera-scraper-low-cost").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "keywords": [
    "Artificial intelligence",
    "Cloud"
  ],
  "maxitems": 40,
  "sort_by": "Best match"
}' |
apify call delectable_incubator/coursera-scraper-low-cost --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=delectable_incubator/coursera-scraper-low-cost",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Coursera Scraper  - Low-cost💲🔥🎓📚",
        "description": "Scrape Coursera courses by keyword 📚🎓 with a powerful education scraper. Extract course titles, ratings, durations, difficulty levels, and course URLs for any topic. Ideal for e-learning research, skill trend analysis, education platforms, and structured online course datasets 📊🚀",
        "version": "0.0",
        "x-build-id": "VS1RQllPGpdgo6Yi7"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/delectable_incubator~coursera-scraper-low-cost/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-delectable_incubator-coursera-scraper-low-cost",
                "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/delectable_incubator~coursera-scraper-low-cost/runs": {
            "post": {
                "operationId": "runs-sync-delectable_incubator-coursera-scraper-low-cost",
                "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/delectable_incubator~coursera-scraper-low-cost/run-sync": {
            "post": {
                "operationId": "run-sync-delectable_incubator-coursera-scraper-low-cost",
                "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",
                "required": [
                    "keywords"
                ],
                "properties": {
                    "keywords": {
                        "title": "Search Keywords 🔍🎓",
                        "type": "array",
                        "description": "One or more keywords or subjects to search courses for on Coursera.\n\nExamples:\n• artificial intelligence\n• machine learning\n• data science\n• web development",
                        "items": {
                            "type": "string"
                        },
                        "default": [
                            "Artificial intelligence",
                            "Cloud"
                        ]
                    },
                    "maxitems": {
                        "title": "Maximum number of results you want to scrape 📊",
                        "type": "integer",
                        "description": "Maximum number of results you want to scrape per keyword 📊",
                        "default": 40
                    },
                    "sort_by": {
                        "title": "Select a Sort type 🌍",
                        "enum": [
                            "Best match",
                            "Newest"
                        ],
                        "type": "string",
                        "description": "Select a Sort type 🌍",
                        "default": "Best match"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
