Domestika Course Catalog Scraper
Pricing
from $0.06 / 1,000 course extracteds
Domestika Course Catalog Scraper
Extract public Domestika course catalogs and profiles with prices, ratings, students, instructors, languages, workload, topics, and FAQs. Export structured data, use the API, or schedule catalog monitoring.
Pricing
from $0.06 / 1,000 course extracteds
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
Extract structured Domestika course catalog data from public category, search, ranked, and individual course pages. Collect prices, instructors, ratings, student counts, languages, workload, learning topics, and FAQs without a login or API key. The Actor uses lightweight HTTP requests rather than a browser, so scheduled catalog snapshots stay fast and economical.
- π Turn Domestika pages into clean JSON, CSV, Excel, XML, or RSS exports.
- π Compare prices, popularity, ratings, and availability across creative courses.
- π©βπ« Research instructors with public biographies, locations, and social links.
- π Schedule recurring runs to monitor catalog changes over time.
What does Domestika Course Catalog Scraper do?
Domestika publishes creative-course catalogs and detailed public course pages. This scraper converts those pages into analysis-ready records. Give it one or more catalog or course URLs, choose a limit, and receive one dataset row per unique course.
It supports:
- public category pages such as Illustration;
- public search result pages;
- ranked catalog URLs such as highest rated;
- direct course URLs;
- optional course-detail enrichment;
- optional Apify Proxy configuration;
- global deduplication by Domestika course ID.
The Actor does not log in, buy courses, or access paid lessons.
Who is Domestika Course Catalog Scraper for?
Edtech catalog teams
- Build a structured creative-learning catalog.
- Normalize course prices, languages, workload, and availability.
- Feed course records into internal search or recommendation systems.
Market and competitive intelligence analysts
- Compare creative-course categories and instructors.
- Track price, rating, and popularity changes.
- Create recurring category snapshots for trend analysis.
Instructor and creator researchers
- Discover teachers in a creative discipline.
- Collect public biographies, locations, topics, and social links.
- Rank instructors using course and student signals.
Data engineers and automation teams
- Export records through the Apify API.
- Schedule updates and deliver them through webhooks.
- Connect datasets to warehouses, spreadsheets, or dashboards.
Why use this Domestika scraper?
- β No login or API key: it reads public course metadata.
- β Rich detail data: combines SSR catalog cards and structured JSON-LD.
- β Low overhead: HTTP/Cheerio extraction runs at 256 MB.
- β Stable identity: numeric course IDs support reliable deduplication.
- β Flexible sources: mix direct course and catalog URLs in one run.
- β Typed output: numeric prices, counts, and ratings remain numbers.
- β Apify-native: use schedules, webhooks, API clients, and 5,000+ integrations.
- β Scope-safe: only domestika.org course URLs are accepted.
What Domestika course data can you extract?
| Data group | Fields |
|---|---|
| Course identity | Course ID, canonical URL, source URL, catalog rank |
| Catalog copy | Title, description, category, badges, cover image |
| Commercial data | Price, currency, availability |
| Social proof | Positive rating percentage, rating count, student count |
| Learning format | Workload, lesson count, resource count, level |
| Localization | Course/audio languages and subtitle languages |
| Instructor | Name, role, portrait, biography, location, social URLs |
| Discovery | Learning topics and public course FAQs |
| Provenance | Extraction timestamp and originating source URL |
Optional fields are omitted when Domestika does not publish them for a course. This avoids misleading placeholder values.
How much does it cost to scrape Domestika courses?
The Actor uses pay-per-event pricing. A run has a $0.005 start charge plus a charge for every course saved. The current Starter/BRONZE price is $0.00010374 per course; higher plans receive volume discounts.
| Plan tier | Per course |
|---|---|
| Free | $0.0001193 |
| Starter / BRONZE | $0.00010374 |
| Scale / SILVER | $0.000080914 |
| Business / GOLD | $0.000062242 |
| Platinum | $0.000041494 |
| Diamond | $0.000029046 |
Example Starter-plan totals:
| Workflow | Courses | Estimated Actor charge |
|---|---|---|
| One direct course | 1 | $0.00510 |
| Small category snapshot | 20 | $0.00707 |
| Multi-source research run | 100 | $0.01537 |
Apify platform usage is handled according to the active Actor pricing shown in the Store. Start with a small limit before scheduling a larger workflow.
How to scrape Domestika courses
- Open Domestika Course Catalog Scraper on Apify.
- Add a public Domestika category, search, ranked, or direct course URL.
- Set Maximum courses to the number of unique records you need.
- Keep Enrich course details enabled for price, language, instructor, and FAQ data.
- Click Start.
- Preview the dataset and export it as JSON, CSV, Excel, XML, or RSS.
- Save the task or add a schedule when you need recurring snapshots.
A minimal direct-course input:
{"startUrls": [{"url": "https://www.domestika.org/en/courses/2432-atmospheric-scenes-in-procreate-paint-with-color-and-light"}],"maxItems": 1,"includeDetails": true}
A ranked-category input:
{"startUrls": [{"url": "https://www.domestika.org/en/courses/category/11-illustration/highest_rated"}],"maxItems": 20,"includeDetails": true,"maxConcurrency": 4}
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | array | required | Public domestika.org category, search, ranked, or direct course URLs |
maxItems | integer | 20 | Maximum unique courses saved across every source URL |
includeDetails | boolean | true | Open course pages for complete detail enrichment |
maxConcurrency | integer | 4 | Simultaneous detail requests, from 1 to 10 |
proxyConfiguration | object | direct access | Optional Apify Proxy settings |
The input editor prefill uses one real direct course and a low three-course limit.
Only URLs on domestika.org whose path includes /courses are accepted.
Output example
{"courseId": 2432,"url": "https://www.domestika.org/en/courses/2432-atmospheric-scenes-in-procreate-paint-with-color-and-light","sourceUrl": "https://www.domestika.org/en/courses/category/11-illustration/highest_rated","rank": 1,"title": "Atmospheric Scenes in Procreate: Paint with Color and Light","description": "Learn to create digital paintings filled with magic and emotion by exploring illustration techniques","category": "Illustration","badges": ["Best seller"],"instructor": "Ramona Wultschner","instructorLocation": "Neuss, Germany","price": 29.99,"currency": "USD","availability": "InStock","ratingPercentage": 100,"ratingCount": 893,"studentCount": 33452,"workload": "PT2H47M1S","courseLanguages": ["English", "French", "Italian", "Portuguese", "Turkish"],"learningTopics": ["Digital Illustration"],"scrapedAt": "2026-07-23T00:00:00.000Z"}
Prices and counts reflect the public page at run time and can change. The exact optional fields vary by course.
Catalog-only versus enriched output
Keep includeDetails enabled when you need the full product.
Each discovered course receives one additional public HTTP request.
This adds price, availability, category, workload, learning format, languages, instructor profile, topics, and FAQs.
Disable detail enrichment when you only need a fast catalog index. Catalog cards still provide:
- course ID and URL;
- title and short description;
- instructor name;
- badge and cover image;
- student count;
- positive rating percentage and rating count.
Both modes return the same course entity and dataset schema.
Tips for best results
- π― Start with
maxItems: 5while validating a new source URL. - π Add several category or search URLs to build a combined catalog.
- π Use direct course URLs for deterministic one-course monitoring.
- β‘ Disable detail enrichment only when catalog-card fields are enough.
- π§ Keep concurrency at 4 unless you have a specific reason to change it.
- π Use English
/en/coursespages for the most consistent labels. - π Schedule snapshots at a cadence appropriate for your analysis.
- π Join historical datasets by
courseId, not by title.
Monitor Domestika catalog changes
Create an Apify task with a stable category or search URL.
Run it daily or weekly and store each dataset ID in your data warehouse.
Compare snapshots using courseId as the key.
Useful changes to detect include:
- price or currency changes;
- availability changes;
- new and removed courses;
- rating and student-count growth;
- changes in workload or language coverage;
- instructor profile updates.
Use a webhook to trigger your comparison pipeline when each run succeeds.
Integrations
Domestika β Google Sheets
Export course rows to a sheet used by catalog or content teams. Create formulas for category, price, rating, and popularity comparisons.
Domestika β Slack or Discord
Schedule a run and send an alert when a tracked price or availability field changes. Keep the detailed dataset linked from the notification.
Domestika β Make or Zapier
Trigger downstream workflows from a completed Actor run.
Upsert courses into Airtable, Notion, a CMS, or a CRM using courseId.
Domestika β data warehouse
Load JSON or CSV snapshots into BigQuery, Snowflake, or PostgreSQL. Build time-series dashboards for price and demand signals.
Domestika β webhook API
Send the dataset URL to your own endpoint as soon as extraction completes. This works well for internal catalog-refresh pipelines.
Use the Apify API with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/domestika-course-catalog-scraper').call({startUrls: [{url: 'https://www.domestika.org/en/courses/category/11-illustration/highest_rated',}],maxItems: 20,includeDetails: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Install the client with npm install apify-client.
Keep your Apify token in an environment variable.
Use the Apify API with Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/domestika-course-catalog-scraper').call(run_input={'startUrls': [{'url': 'https://www.domestika.org/en/courses/2432-atmospheric-scenes-in-procreate-paint-with-color-and-light'}],'maxItems': 1,'includeDetails': True,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
Install the client with pip install apify-client.
The returned dataset supports pagination for larger exports.
Use the Apify API with cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~domestika-course-catalog-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls": [{"url": "https://www.domestika.org/en/courses/search/illustration"}],"maxItems": 10,"includeDetails": true}'
The run response includes the dataset and key-value-store identifiers. Poll the run endpoint or use a webhook to wait for completion.
Use with AI agents via MCP
Domestika Course Catalog Scraper can be used by AI assistants through the Model Context Protocol.
For Claude Code:
$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/domestika-course-catalog-scraper"
For Claude Desktop, Cursor, or VS Code, add this MCP configuration:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/domestika-course-catalog-scraper"}}}
Authenticate with your Apify account when prompted.
Example prompts
Then try prompts such as:
- βUse
automation-lab/domestika-course-catalog-scraperto compare the top-rated illustration courses by price and student count.β - βExtract this Domestika course and summarize the teacher background, workload, languages, and learning topics.β
- βCreate a weekly Domestika category snapshot and flag courses whose price or availability changed.β
Is it legal to scrape Domestika?
This Actor extracts information visible on public Domestika course and catalog pages. It does not authenticate, circumvent paid access, or retrieve lesson media. Web scraping laws and website terms vary by jurisdiction and use case.
You are responsible for ensuring that your collection and use of data comply with applicable laws, Domestika terms, privacy obligations, and intellectual-property rights. Collect only what you need, use reasonable request volume, and avoid republishing protected course content. Do not use the Actor to access purchased or private material.
Limitations
- The first server-rendered result surface of each supplied catalog/search URL is extracted; Domestika currently does not expose working
?page=pagination on the tested ranked page. - Add multiple source URLs when your workflow needs several catalog slices.
- Detail fields depend on what Domestika publishes for the selected locale and course.
- Price and availability may vary by locale, campaign, or time.
- The Actor does not download course videos, lessons, or other paid assets.
- Domestika HTML can change; extraction errors are surfaced rather than silently returning an empty successful dataset.
Troubleshooting
Why did my run reject a URL?
Use a public https://www.domestika.org/.../courses... URL.
The Actor intentionally rejects other hosts and non-course pages so unrelated inputs cannot bypass product scope.
Why is an optional field missing?
Domestika does not publish every field on every course or locale. Keep detail enrichment enabled and try the English page before treating the field as unavailable.
Why did I receive fewer courses than maxItems?
maxItems is a ceiling, not a promise.
The source surface may contain fewer unique course cards, and duplicates across source URLs are removed by course ID.
What should I do after an extraction failure?
Inspect the Actor log and verify that the source URL still opens publicly. If direct access is restricted in your region, enable Apify Proxy in the advanced input section.
Frequently asked questions
How fast is the Domestika scraper?
A direct course usually finishes in seconds. Catalog runs depend on course count and detail enrichment; up to four detail pages are requested concurrently by default.
Do I need a Domestika account?
No. The supported product uses only anonymous public course metadata.
Can I scrape paid lessons?
No. Paid lessons, downloads, and authenticated learning content are outside scope.
Does it support category and search pages?
Yes.
Supply public category, ranked, search, or direct course URLs in startUrls.
How are duplicate courses handled?
The Actor deduplicates every discovered record by Domestikaβs numeric course ID across all source URLs.
Can I schedule it as a monitor?
Yes.
Save the input as an Apify task, add a schedule, and compare datasets using courseId.
Other research and catalog scrapers
Combine this Actor with other Automation Lab tools:
- Google Search Scraper for broader course and instructor discovery.
- Google Scholar Scraper for education and learning-market research.
- YouTube Scraper for public tutorial and creator analysis.
- LinkedIn Jobs Scraper for creative-skill demand research.
- Reddit Scraper for public learner discussions and course-demand signals.
Each linked Actor has its own input, output, pricing, and data-use requirements. Use stable identifiers when joining results across sources.