# Futurelearn Course Spider (`getdataforme/futurelearn-course-spider`) Actor

The FutureLearn Course Spider - Run is an Apify Actor that scrapes course details from FutureLearn.com across specified pages. Extract titles, providers, durations, ratings, and more in structured JSON. Ideal for educational research, content curation, or market analysis. Flexible and reliable

- **URL**: https://apify.com/getdataforme/futurelearn-course-spider.md
- **Developed by:** [GetDataForMe](https://apify.com/getdataforme) (community)
- **Categories:** AI, Automation, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $9.00 / 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.

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

## FutureLearn Course Spider

### Introduction

The FutureLearn Course Spider - Run is an Apify Actor designed to scrape and collect detailed course information from FutureLearn.com. It navigates through specified pages to extract data such as course titles, introductions, providers, durations, ratings, and more, delivering structured results for easy analysis or integration.

### Input Parameters

The Actor accepts a JSON input with the following parameters:

| Parameter  | Type    | Required | Description |
|------------|---------|----------|-------------|
| StartPage | Integer | Yes     | The starting page number for scraping courses. |
| MaxPages  | Integer | Yes     | The maximum number of pages to scrape. |

Example input:

```
{
  "StartPage": 1,
  "MaxPages": 100
}
```

### Features

- **Paginated Scraping**: Efficiently crawls multiple pages on FutureLearn, starting from a specified page up to a maximum limit.
- **Comprehensive Data Extraction**: Gathers rich details including course ID, title, URL, provider, duration, ratings, category, and metadata like Unlimited inclusion.
- **Structured JSON Output**: Returns results in a clean, parsable JSON array for straightforward use in applications or databases.
- **Flexible Configuration**: Allows users to control the scope of scraping with start and max page parameters for targeted data collection.
- **Reliable and Up-to-Date**: Ensures fresh course data from FutureLearn without manual effort.

### Possible Use Cases

- **Educational Research**: Analyze course trends, such as popular categories, average ratings, or provider distributions across pages.
- **Content Curation**: Build custom course catalogs or recommendation systems by aggregating FutureLearn data.
- **Market Insights**: Evaluate online learning offerings, including durations and review metrics, for competitive analysis.
- **Personal Development Tools**: Integrate scraped data into apps for users to discover and compare courses efficiently.
- **Data Enrichment**: Enhance datasets for reporting, AI models, or dashboards with structured FutureLearn course information.

### Output

The Actor outputs an array of JSON objects, each representing a scraped course. Example output:

```
[
  {
    "course_id": 1187,
    "course_slug": "bookkeeping-financial-accounting",
    "course_url": "https://www.futurelearn.com/courses/bookkeeping-financial-accounting",
    "title": "Bookkeeping for Personal and Business Accounting",
    "introduction": "Learn how to balance your books and develop the skills to manage finances in personal and business environments.",
    "image_url": "https://ugc.futurelearn.com/uploads/images/5d/cb/thumbnail_5dcb270b-8e7c-4582-b9c6-3c3bc9b7888a.jpg",
    "image_alt": "man and woman at desk with laptop, calculator and printed paper with table of numbers",
    "provider": "The Open University",
    "duration_weeks": "4 weeks",
    "hours_per_week": "3 hrs per week",
    "total_reviews": 155,
    "average_rating": 4.45806,
    "category": "Business & Management",
    "course_type_metadata": [
      {
        "icon": "unlimited",
        "label": "Included in Unlimited"
      }
    ],
    "is_study_uk": false
  },
  {
    "course_id": 928,
    "course_slug": "perioperative-medicine",
    "course_url": "https://www.futurelearn.com/courses/perioperative-medicine",
    "title": "Perioperative Medicine in Action",
    "introduction": "Explore perioperative medicine and how you can improve care for the high risk surgical patient. Join this RCoA endorsed course.",
    "image_url": "https://ugc.futurelearn.com/uploads/images/42/83/thumbnail_4283e6ec-7adb-48a0-b7df-5327551c1988.jpg",
    "image_alt": "",
    "provider": "UCL (University College London)",
    "duration_weeks": "4 weeks",
    "hours_per_week": "3 hrs per week",
    "total_reviews": 236,
    "average_rating": 4.73729,
    "category": "Healthcare & Medicine",
    "course_type_metadata": [
      {
        "icon": "unlimited",
        "label": "Included in Unlimited"
      }
    ],
    "is_study_uk": false
  }
]
```

### Support

For bug reports or custom needs, contact support@getdataforme.com\
Or use our contact form: https://getdataforme.com/contact/\
(Make sure to include a clear subject line in your message)

# Actor input Schema

## `StartPage` (type: `integer`):

The start page for the spider.

## `MaxPages` (type: `integer`):

The max pages for the spider.

## Actor input object example

```json
{
  "StartPage": 1,
  "MaxPages": 100
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("getdataforme/futurelearn-course-spider").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("getdataforme/futurelearn-course-spider").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 '{}' |
apify call getdataforme/futurelearn-course-spider --silent --output-dataset

```

## MCP server setup

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

```

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/EmhKOiU95eEELc1KG/builds/ad1t3Gd9YFdehKhq9/openapi.json
