# Online Course Lead Finder (`esrok/online-course-lead-finder`) Actor

Find public online courses, course creators, course pages, visible prices, creator websites, public contact pages, and social links from keywords or direct course URLs.

- **URL**: https://apify.com/esrok/online-course-lead-finder.md
- **Developed by:** [Esrok](https://apify.com/esrok) (community)
- **Categories:** Lead generation, Education, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 course lead records

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 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

## Online Course Lead Finder

Find public online courses, course creators, course pages, prices, creator websites, public contact pages, and social links from keywords or direct course URLs.

Best for affiliate marketers, creator partnership teams, agencies, B2B lead generators, market researchers, and automation builders who need clean public course data for outreach and analysis.

### What this Actor does

Online Course Lead Finder searches public web results for online courses and scans direct course URLs. It extracts structured course and creator data that can be exported to CSV, JSON, Excel, Google Sheets, Make, Zapier, n8n, or an API workflow.

It only collects publicly visible information. It does not scrape private student data, bypass logins, access paid course content, or guess private contact details.

### Why use it

Course and creator research is slow when done manually. This Actor gives you a repeatable way to build course lead datasets for affiliate research, creator partnerships, online education analysis, and competitor monitoring.

### Who it is for

- Affiliate marketers
- B2B lead generation teams
- Agencies
- Course platform researchers
- Creator partnership teams
- Online education researchers
- People building course databases
- Automation builders using Apify, Make, Zapier, n8n, Google Sheets, or APIs

### Use cases

- Find online courses by niche or keyword
- Build creator partnership prospect lists
- Research prices and positioning in a market
- Find creator websites and public contact pages
- Collect public social links for course creators
- Export course leads to spreadsheets or CRM workflows

### Input

- `keywords` - course topics, niches, or search keywords
- `courseUrls` - direct course URLs to scan
- `maxResults` - maximum course leads to return
- `includePrices` - include visible prices
- `includeCreatorInfo` - include public creator/instructor information
- `includeContactInfo` - include public emails, phones, and contact pages
- `includeSocialLinks` - include public social links
- `locationOrLanguage` - optional search hint
- `deduplicateResults` - remove duplicate course URLs
- `proxyConfiguration` - optional Apify proxy support
- `debugMode` - save extra debugging data

### Output

Each dataset item can include:

- `courseTitle`
- `courseUrl`
- `coursePlatform`
- `creatorName`
- `creatorUrl`
- `creatorWebsite`
- `price`
- `currency`
- `category`
- `niche`
- `descriptionSnippet`
- `imageUrl`
- `rating`
- `reviewCount`
- `studentsCount`
- `email`
- `phone`
- `contactPage`
- `instagram`
- `facebook`
- `linkedin`
- `youtube`
- `sourceKeyword`
- `scrapedAt`

### Example input

```json
{
  "keywords": ["AI marketing course", "real estate investing course"],
  "maxResults": 25,
  "includePrices": true,
  "includeCreatorInfo": true,
  "includeContactInfo": true,
  "includeSocialLinks": true,
  "locationOrLanguage": "English",
  "deduplicateResults": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
````

### Example output

```json
{
  "courseTitle": "AI Marketing Masterclass",
  "courseUrl": "https://example.com/courses/ai-marketing-masterclass",
  "coursePlatform": "example.com",
  "creatorName": "Jane Creator",
  "creatorUrl": "https://example.com/jane-creator",
  "creatorWebsite": "https://janecreator.com/",
  "price": 199,
  "currency": "USD",
  "category": "Marketing",
  "niche": "AI marketing course",
  "descriptionSnippet": "Learn how to use AI tools for content strategy, email campaigns, and automated marketing workflows.",
  "imageUrl": "https://example.com/course-image.jpg",
  "rating": 4.8,
  "reviewCount": 241,
  "studentsCount": 5100,
  "email": "hello@janecreator.com",
  "phone": null,
  "contactPage": "https://janecreator.com/contact",
  "instagram": "https://www.instagram.com/janecreator/",
  "facebook": null,
  "linkedin": "https://www.linkedin.com/in/janecreator/",
  "youtube": "https://www.youtube.com/@janecreator",
  "sourceKeyword": "AI marketing course",
  "scrapedAt": "2026-05-30T12:00:00.000Z"
}
```

### How to run

1. Open the Actor on Apify.
2. Enter course keywords, niches, or direct course URLs.
3. Choose whether to include prices, creator info, contact info, and social links.
4. Run the Actor.
5. Export the dataset from Apify.

### Export and integrations

Export results as CSV, JSON, JSONL, XML, RSS, or Excel. Connect outputs to Make, Zapier, n8n, Google Sheets, webhooks, or your own backend through the Apify API.

### API usage

Start a run with the Apify API:

```bash
curl "https://api.apify.com/v2/acts/esrok~online-course-lead-finder/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"keywords":["AI marketing course"],"maxResults":10}'
```

Fetch dataset items:

```bash
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?format=json&clean=true&token=YOUR_APIFY_TOKEN"
```

### Responsible use

Use this Actor only for lawful public web research. Do not use it to collect private student data, bypass course paywalls, access login-only areas, or guess private contact details.

### Limitations

- Search result coverage varies by keyword, region, and language.
- Some course pages hide prices or creator details.
- The Actor only extracts visible public contact information.
- It does not access paid course content or private member areas.
- Pages that block automated traffic may require proxy settings or may not return results.

### FAQ

#### Does this scrape student data?

No. It does not collect private student information.

#### Can it scrape paid lessons?

No. It only scans publicly visible course landing pages and creator pages.

#### Can it find every creator email?

No. It only returns emails that are publicly visible on scanned pages.

#### Can I use it for affiliate research?

Yes. It is designed for public course discovery, creator research, and affiliate/partnership prospecting.

# Actor input Schema

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

Course topics, niches, or keywords to search for.

## `courseUrls` (type: `array`):

Optional direct course URLs to scan.

## `maxResults` (type: `integer`):

Maximum course leads to return.

## `includePrices` (type: `boolean`):

Extract visible course prices when available.

## `includeCreatorInfo` (type: `boolean`):

Extract public creator/instructor names, URLs, and websites when visible.

## `includeContactInfo` (type: `boolean`):

Extract public emails, phones, and contact pages from course or creator pages when visible.

## `includeSocialLinks` (type: `boolean`):

Extract public social links from course and creator pages.

## `locationOrLanguage` (type: `string`):

Optional location or language hint for search queries.

## `deduplicateResults` (type: `boolean`):

Remove duplicate course URLs from the output.

## `proxyConfiguration` (type: `object`):

Optional Apify proxy configuration. Useful for reliable public web requests.

## `debugMode` (type: `boolean`):

Save extra request/debug information to the key-value store.

## Actor input object example

```json
{
  "keywords": [
    "AI marketing course",
    "real estate investing course"
  ],
  "courseUrls": [],
  "maxResults": 25,
  "includePrices": true,
  "includeCreatorInfo": true,
  "includeContactInfo": true,
  "includeSocialLinks": true,
  "locationOrLanguage": "English",
  "deduplicateResults": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "debugMode": false
}
```

# Actor output Schema

## `courseLeads` (type: `string`):

Clean public online course and creator lead records for market research, affiliate research, and outreach workflows.

# 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": [
        "AI marketing course",
        "real estate investing course"
    ],
    "courseUrls": [],
    "maxResults": 25,
    "locationOrLanguage": "English"
};

// Run the Actor and wait for it to finish
const run = await client.actor("esrok/online-course-lead-finder").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": [
        "AI marketing course",
        "real estate investing course",
    ],
    "courseUrls": [],
    "maxResults": 25,
    "locationOrLanguage": "English",
}

# Run the Actor and wait for it to finish
run = client.actor("esrok/online-course-lead-finder").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": [
    "AI marketing course",
    "real estate investing course"
  ],
  "courseUrls": [],
  "maxResults": 25,
  "locationOrLanguage": "English"
}' |
apify call esrok/online-course-lead-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=esrok/online-course-lead-finder",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Online Course Lead Finder",
        "description": "Find public online courses, course creators, course pages, visible prices, creator websites, public contact pages, and social links from keywords or direct course URLs.",
        "version": "1.0",
        "x-build-id": "DXvhG9wfuaXm4Dzuw"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/esrok~online-course-lead-finder/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-esrok-online-course-lead-finder",
                "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/esrok~online-course-lead-finder/runs": {
            "post": {
                "operationId": "runs-sync-esrok-online-course-lead-finder",
                "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/esrok~online-course-lead-finder/run-sync": {
            "post": {
                "operationId": "run-sync-esrok-online-course-lead-finder",
                "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",
                "properties": {
                    "keywords": {
                        "title": "Keywords or niches",
                        "type": "array",
                        "description": "Course topics, niches, or keywords to search for.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "courseUrls": {
                        "title": "Direct course URLs",
                        "type": "array",
                        "description": "Optional direct course URLs to scan.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Maximum results",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum course leads to return.",
                        "default": 50
                    },
                    "includePrices": {
                        "title": "Include prices",
                        "type": "boolean",
                        "description": "Extract visible course prices when available.",
                        "default": true
                    },
                    "includeCreatorInfo": {
                        "title": "Include creator info",
                        "type": "boolean",
                        "description": "Extract public creator/instructor names, URLs, and websites when visible.",
                        "default": true
                    },
                    "includeContactInfo": {
                        "title": "Include public contact info",
                        "type": "boolean",
                        "description": "Extract public emails, phones, and contact pages from course or creator pages when visible.",
                        "default": true
                    },
                    "includeSocialLinks": {
                        "title": "Include social links",
                        "type": "boolean",
                        "description": "Extract public social links from course and creator pages.",
                        "default": true
                    },
                    "locationOrLanguage": {
                        "title": "Location or language",
                        "type": "string",
                        "description": "Optional location or language hint for search queries."
                    },
                    "deduplicateResults": {
                        "title": "Deduplicate results",
                        "type": "boolean",
                        "description": "Remove duplicate course URLs from the output.",
                        "default": true
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional Apify proxy configuration. Useful for reliable public web requests.",
                        "default": {
                            "useApifyProxy": true
                        }
                    },
                    "debugMode": {
                        "title": "Debug mode",
                        "type": "boolean",
                        "description": "Save extra request/debug information to the key-value store.",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
