Teachable Course Scraper avatar

Teachable Course Scraper

Pricing

$19.99/month + usage

Go to Apify Store
Teachable Course Scraper

Teachable Course Scraper

Scrape courses from any Teachable school. Extract titles, prices, students, reviews, instructor profiles, curriculum, sales pages and testimonials. Works with any Teachable-powered site including custom domains.

Pricing

$19.99/month + usage

Rating

0.0

(0)

Developer

SilentFlow

SilentFlow

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

by SilentFlow

Extract comprehensive course data from any Teachable-powered school. Get titles, prices, student counts, reviews, instructor profiles, curriculum, sales pages, and descriptions.

Why use this scraper?

  • Universal: Works with any Teachable school - custom domains or teachable.com subdomains
  • Comprehensive data: 30+ data points per course including pricing, reviews, curriculum
  • Instructor profiles: Extract instructor names, bios, avatars, and credentials
  • Sales page extraction: Full marketing copy, testimonials, and page structure
  • Curriculum details: Complete course outline with sections, lectures, and durations

Use cases

IndustryApplication
Market researchAnalyze online course market trends and pricing
Competitive intelligenceMonitor competitor course offerings and prices
Content aggregationBuild course comparison or discovery platforms
Academic researchStudy online education patterns and growth
Lead generationIdentify course creators for partnerships
Price monitoringTrack pricing changes across Teachable schools

Input parameters

URLs

ParameterTypeDescription
schoolUrlsarrayTeachable school URLs to scrape all courses from
courseUrlsarrayDirect course page URLs for specific courses

Options

ParameterTypeDefaultDescription
scrapeDetailsbooleantrueVisit each course page for full data (slower but complete)
scrapeSalesPagebooleanfalseExtract full sales page content
maxItemsinteger100Maximum courses to return (max: 5000)
maxConcurrencyinteger5Parallel page requests
maxRequestRetriesinteger5Retries per failed request
requestTimeoutSecsinteger30Page load timeout in seconds
proxyTypestringresidentialProxy type: residential, datacenter, auto

Output data

Each course record contains:

{
"id": "12345",
"title": "Complete Python Masterclass",
"slug": "complete-python-masterclass",
"url": "https://school.teachable.com/p/complete-python-masterclass",
"description": "Learn Python from scratch with hands-on projects...",
"shortDescription": "Master Python programming in 30 days",
"price": 197.00,
"originalPrice": 497.00,
"currency": "USD",
"isFree": false,
"studentsCount": 12450,
"reviewsCount": 342,
"averageRating": 4.8,
"lessonsCount": 156,
"category": "Programming",
"instructorName": "John Smith",
"instructorBio": "Senior Python developer with 15 years of experience...",
"instructorAvatar": "https://...",
"thumbnail": "https://...",
"promoVideo": "https://...",
"curriculum": [
{
"title": "Getting Started",
"position": 1,
"lectures": [
{
"title": "Welcome to the Course",
"type": "video",
"duration": "5:30",
"isFree": true
}
]
}
],
"testimonials": [
{
"author": "Jane Doe",
"content": "This course completely changed my career...",
"rating": 5.0
}
],
"schoolName": "Python Academy",
"schoolUrl": "https://school.teachable.com",
"scrapedAt": "2024-06-01T12:00:00Z"
}

Field descriptions

FieldDescription
idUnique course identifier on Teachable
slugURL-friendly course identifier
priceCurrent course price
originalPricePrice before any discounts
isFreeWhether the course is free
studentsCountNumber of enrolled students
reviewsCountNumber of reviews/testimonials
averageRatingAverage rating (0-5 scale)
lessonsCountTotal number of lessons/lectures
curriculumFull course outline with sections and lectures
salesPageContentFull sales page text (when scrapeSalesPage=true)
testimonialsStudent reviews and testimonials

Examples

Scrape all courses from a school

{
"schoolUrls": [
{ "url": "https://myschool.teachable.com" }
],
"scrapeDetails": true,
"maxItems": 50
}

Scrape specific courses

{
"courseUrls": [
{ "url": "https://school.teachable.com/p/python-course" },
{ "url": "https://school.teachable.com/p/javascript-course" }
],
"scrapeDetails": true,
"scrapeSalesPage": true
}

Quick overview (no details)

{
"schoolUrls": [
{ "url": "https://school.teachable.com" }
],
"scrapeDetails": false,
"maxItems": 200
}

Multiple schools

{
"schoolUrls": [
{ "url": "https://school1.teachable.com" },
{ "url": "https://school2.teachable.com" },
{ "url": "https://www.customdomain.com" }
],
"scrapeDetails": true,
"maxItems": 500
}

Integrations

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("silentflow/teachable-scraper").call(run_input={
"schoolUrls": [{"url": "https://school.teachable.com"}],
"scrapeDetails": True,
"maxItems": 50
})
for course in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{course['title']}: ${course['price']} ({course['studentsCount']} students)")

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('silentflow/teachable-scraper').call({
schoolUrls: [{ url: 'https://school.teachable.com' }],
scrapeDetails: true,
maxItems: 50
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(course => console.log(`${course.title}: $${course.price}`));

Performance & limits

MetricValue
Courses per schoolUnlimited
Average speed (without details)~10 courses/second
Average speed (with details)~1-2 courses/second
Max items per run5,000
Supported schoolsAny Teachable site

Tips for best results

  1. Start small: Test with maxItems: 5 before large scrapes
  2. Details add time: Set scrapeDetails: false for a quick overview, then enable for full data
  3. Custom domains work: Just use the full URL (e.g., https://www.mycourses.com)
  4. Sales page content: Only enable scrapeSalesPage if you need marketing copy analysis

FAQ

Q: How do I find a Teachable school's URL? A: Look for domains ending in .teachable.com or visit the school directly. Many schools use custom domains - you can use those too.

Q: Can I scrape enrolled course content? A: No, this scraper only extracts publicly available data from sales/landing pages. It does not access gated content.

Q: What if a school has many courses? A: Use maxItems to control how many courses to extract. The scraper handles pagination automatically.

Q: Are all Teachable themes supported? A: Yes, the scraper handles different Teachable themes and layouts.

Q: How often should I scrape? A: Course data doesn't change frequently. Weekly or monthly scrapes are usually sufficient.

Q: What happens if a school doesn't list courses publicly? A: The scraper will return an empty dataset. Some schools hide their course listing page.

Support

Need help? We're here for you:

  • Feature requests: Let us know what you need
  • Custom solutions: Contact us for enterprise integrations or high-volume needs

Check out our other scrapers: SilentFlow on Apify