StepStone.at Scraper - Austrian Job Portal
Pricing
from $3.75 / 1,000 search results
StepStone.at Scraper - Austrian Job Portal
Scrape job listings from StepStone.at, Austria's leading job board. Extract job titles, companies, salaries, descriptions, contact info, and more across all 9 Bundesländer. Supports keyword search, location filtering, AI-powered data extraction, and direct URL monitoring.
Pricing
from $3.75 / 1,000 search results
Rating
0.0
(0)
Developer
Alessandro Santamaria
Actor stats
0
Bookmarked
5
Total users
4
Monthly active users
1.4 days
Issues response
8 days ago
Last modified
Categories
Share
StepStone.at Scraper - Austria's #1 Job Portal
Professional job scraper for StepStone.at, Austria's leading job platform with over 40,000+ active job postings across all 9 Bundeslaender (federal states).
Features
- Comprehensive Coverage: All 9 Austrian Bundeslaender (Wien, Niederosterreich, Oberosterreich, Steiermark, Tirol, Karnten, Salzburg, Vorarlberg, Burgenland)
- Multi-Keyword Search: Run multiple search queries in one scrape, results automatically deduplicated
- Advanced Filtering: Employment type, experience level, location radius, date posted, sort order
- Direct URL Mode: Scrape specific job URLs for status checking and updates
- Full Job Details: JSON-LD extraction for structured data
- LLM Enhancement: Optional AI extraction of requirements, benefits, and contact info
- Proxy Support: Built-in Apify proxy integration to avoid rate limits
- Lightweight: HTTP-only (CheerioCrawler) -- no browser needed, fast and cost-efficient
Input Parameters
| Field | Type | Description | Default |
|---|---|---|---|
directUrls | array | Direct StepStone.at job URLs to scrape (skips search) | - |
searchQueries | string[] | One or more search keywords. Each runs as a separate search, results deduplicated. | - |
searchQuery | string | Single search keyword (backward compatible, use searchQueries for multiple) | - |
location | string | City, region, or state name (e.g., "Wien", "Salzburg", "Graz") | - |
radius | integer | Search radius in km (0, 10, 20, 30, 50, 100, 150, 200) | 30 |
bundesland | string | Austrian federal state -- used when location is not set | - |
employmentType | string | Vollzeit, Teilzeit, Freelance, Ausbildung, Praktikum | All |
experienceLevel | string | Einsteiger, Berufserfahren, Fuhrungskraft | All |
datePosted | string | Jobs posted within: 1, 7, or 30 days | All |
sortBy | string | Sort order: date (newest first) or relevance | Default |
maxResultsPerQuery | integer | Max results per search keyword | 100 |
maxResults | integer | Total cap across all queries (0 = unlimited) | 0 |
includeJobDetails | boolean | Visit detail pages for full descriptions | true |
llmApiKey | string | Groq/OpenRouter API key for AI extraction | - |
llmModel | string | AI model: llama-3.1-8b-instant, mistral-small | none |
proxyConfiguration | object | Apify proxy settings | Datacenter |
Austrian Bundeslaender
- Wien (W) - Vienna
- Niederosterreich (NO) - Lower Austria
- Oberosterreich (OO) - Upper Austria
- Steiermark (ST) - Styria
- Tirol (T) - Tyrol
- Karnten (K) - Carinthia
- Salzburg (S) - Salzburg
- Vorarlberg (V) - Vorarlberg
- Burgenland (B) - Burgenland
Output Schema
Each job listing follows the standardized JobListing schema:
{"id": "software-engineer-wien-12345","title": "Software Engineer","company": "TechCorp Austria GmbH","location": "Wien","canton": "W","salary_min": 50000,"salary_max": 70000,"salary_currency": "EUR","salary_text": "EUR 50,000 - 70,000 per year","employment_type": "full-time","workload_min": 100,"workload_max": 100,"remote_option": "hybrid","description_snippet": "Wir suchen einen erfahrenen Software Engineer...","description_full": "Full job description text...","requirements": ["5+ Jahre Erfahrung in der Softwareentwicklung","Expertise in Java, Spring Boot","Agile Methodologien"],"posted_at": "2024-01-15T00:00:00Z","expires_at": "2024-02-15T00:00:00Z","source_url": "https://www.stepstone.at/job/...","source_platform": "stepstone.at","apply_url": "https://...","apply_email": "jobs@techcorp.at","contact_firstname": "Maria","contact_lastname": "Mueller","contact_salutation": "Frau","contact_email": "maria.mueller@techcorp.at","contact_phone": "+43 1 234567890","contact_position": "HR Manager","company_url": "https://www.stepstone.at/cmp/at/TechCorp-Austria-12345/jobs.html","company_website": "https://www.techcorp.at","company_job_count": 8,"company_description": "Leading tech company in Austria...","company_benefits": ["Flexible Arbeitszeiten","Homeoffice-Moglichkeit","Weiterbildungsmoglichkeiten"],"search_query": "Software Engineer","scraped_at": "2024-01-16T12:00:00Z"}
Usage Examples
Example 1: Software Jobs in Vienna
{"searchQueries": ["Software Engineer"],"location": "Wien","radius": 30,"employmentType": "Vollzeit","maxResultsPerQuery": 100,"includeJobDetails": true}
Example 2: Multiple Keywords -- Nursing + Caregiving in Tirol
{"searchQueries": ["Krankenpfleger", "Altenpfleger", "Pflegefachkraft"],"bundesland": "Tirol","datePosted": "7","maxResultsPerQuery": 50,"includeJobDetails": true,"llmApiKey": "gsk_xxxxx","llmModel": "llama-3.1-8b-instant"}
Results are deduplicated across keywords -- a job appearing for both "Krankenpfleger" and "Pflegefachkraft" is only returned once.
Example 3: Recent Jobs in Salzburg
{"searchQueries": ["Data Analyst"],"location": "Salzburg","datePosted": "7","maxResultsPerQuery": 50,"includeJobDetails": true}
Example 4: Large-Scale Multi-Keyword Scrape with Total Cap
{"searchQueries": ["Data Scientist", "Machine Learning", "KI Engineer", "Data Analyst"],"location": "Wien","maxResultsPerQuery": 200,"maxResults": 500,"includeJobDetails": true}
Each keyword gets up to 200 results, but the total is capped at 500. The search_query field in each result shows which keyword found it.
Example 5: Direct URL Mode (Status Checking)
{"directUrls": ["https://www.stepstone.at/job/software-engineer-abc123","https://www.stepstone.at/job/data-scientist-xyz789"],"includeJobDetails": true,"llmApiKey": "gsk_...","llmModel": "llama-3.1-8b-instant"}
Use direct URL mode to:
- Check if jobs are still online/active
- Update existing job data
- Monitor specific job postings
Example 6: With AI Enhancement
{"searchQueries": ["Marketing Manager"],"location": "Graz","maxResultsPerQuery": 30,"includeJobDetails": true,"llmApiKey": "gsk_YOUR_GROQ_KEY","llmModel": "llama-3.1-8b-instant"}
Location Filtering
You can filter by location in two ways:
locationparameter (recommended): Pass any city name, region, or state name directly (e.g.,"Wien","Salzburg","Graz"). This is the most flexible option.bundeslandparameter: Pass a state name (e.g.,"Tirol"). Only used whenlocationis not set.
If both location and bundesland are provided, location takes precedence.
API Usage
Via API
curl -X POST "https://api.apify.com/v2/acts/santamaria~stepstone-at-scraper/runs" \-H "Authorization: Bearer YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQueries": ["Software Engineer", "Backend Developer"],"location": "Wien","radius": 30,"maxResultsPerQuery": 100,"includeJobDetails": true}'
Via Apify JavaScript SDK
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('santamaria/stepstone-at-scraper').call({searchQueries: ['Software Engineer', 'Backend Developer'],location: 'Wien',maxResultsPerQuery: 100,includeJobDetails: true,});const dataset = await client.dataset(run.defaultDatasetId).listItems();console.log(dataset.items);
AI Enhancement (Optional)
When you provide a Groq or OpenRouter API key, the scraper uses AI to extract:
- Requirements: Structured list of job requirements and qualifications
- Benefits: Company benefits and perks
- Contact Information: Name, email, phone, position of recruiter
- Salutation: Herr/Frau for proper addressing
Supported Models
- llama-3.1-8b-instant (Groq) - Fast and accurate, best for most use cases
- mistral-small-3.1-24b-instruct (OpenRouter) - Higher quality, slower
Get API keys:
- Groq: https://console.groq.com (starts with
gsk_) - OpenRouter: https://openrouter.ai
Performance & Pricing
Performance
- Search-only mode: ~100 jobs/minute (without detail pages)
- Full detail mode: ~20-30 jobs/minute (with detail pages)
- With LLM extraction: ~10-15 jobs/minute (depends on API speed)
Typical Compute Units (CU)
- 50 jobs (search only): ~0.002 CU
- 50 jobs (with details): ~0.01 CU
- 100 jobs (with details + LLM): ~0.03 CU
- 1,000 jobs (with details + LLM): ~0.3 CU
Note: AI extraction requires separate API keys (Groq/OpenRouter) with their own pricing.
Technical Details
Architecture
- Platform: StepStone.at (server-rendered HTML)
- Crawler: CheerioCrawler (HTTP-only, no browser)
- Selectors: Data attributes and JSON-LD structured data
- Pagination: Automatic page-by-page crawling (25 jobs/page)
- Error Handling: Offline job detection (404), validation, retries
- Memory: 128-512 MB (vs 512-2048 MB with Playwright)
Data Quality
- Validation: Zod schema validation on all outputs
- Deduplication: Job IDs tracked to prevent duplicates across queries
- Offline Detection: Flags expired/unavailable jobs
- Date Parsing: Handles relative dates (e.g., "vor 3 Tagen")
- Location Mapping: Automatic Bundesland detection from cities
- Contact Extraction: Email, phone, and company website via regex; names via LLM only (to avoid false positives)
Bundesland Codes
The canton field uses standard Austrian Bundesland codes:
| Code | Bundesland | Major Cities |
|---|---|---|
| W | Wien | Vienna |
| NO | Niederosterreich | St. Polten, Wiener Neustadt |
| OO | Oberosterreich | Linz, Wels, Steyr |
| ST | Steiermark | Graz |
| T | Tirol | Innsbruck |
| K | Karnten | Klagenfurt, Villach |
| S | Salzburg | Salzburg |
| V | Vorarlberg | Dornbirn, Bregenz, Feldkirch |
| B | Burgenland | Eisenstadt |
Best Practices
- Use specific searches: Narrow queries yield better results
- Set reasonable limits: Start with 50-100 jobs for testing
- Enable job details: Full descriptions provide much richer data
- Use LLM extraction: For structured requirements and contact info
- Monitor costs: Check CU usage for large-scale scraping
- Use multi-keyword: Cover more ground with
searchQueriesarray
Troubleshooting
No jobs found
- Check if your search query is too specific
- Try broader location (e.g., state instead of city)
- Remove filters like employment type or experience level
Jobs missing details
- Ensure
includeJobDetails: trueis set - Check if jobs are expired (they'll have
job_status: "offline") - Increase proxy quality if facing rate limits
LLM extraction not working
- Verify your API key is correct
- Check that
llmModelis not set to "none" - Ensure you have credits in your Groq/OpenRouter account
Support
For issues or questions:
- Apify Issues: Use the "Issues" tab on this actor's page
- Apify Community: https://community.apify.com
Part of the Santamaria Job Scrapers Suite - Professional-grade job data for the DACH region and beyond.
Other Scrapers
- jobscout24-ch: Swiss job market (11 cantons, 100,000+ jobs)
- stepstone-de: Germany (16 states, 200,000+ jobs)
- stepstone-at: Austria (9 states, 40,000+ jobs) -- You are here
- jobs-ch: Switzerland's #1 job portal
- More coming soon for Netherlands and other EU markets