StepStone.at Scraper - Austrian Job Portal avatar

StepStone.at Scraper - Austrian Job Portal

Pricing

from $3.75 / 1,000 search results

Go to Apify Store
StepStone.at Scraper - Austrian Job Portal

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

Alessandro Santamaria

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

4

Monthly active users

1.4 days

Issues response

8 days ago

Last modified

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

FieldTypeDescriptionDefault
directUrlsarrayDirect StepStone.at job URLs to scrape (skips search)-
searchQueriesstring[]One or more search keywords. Each runs as a separate search, results deduplicated.-
searchQuerystringSingle search keyword (backward compatible, use searchQueries for multiple)-
locationstringCity, region, or state name (e.g., "Wien", "Salzburg", "Graz")-
radiusintegerSearch radius in km (0, 10, 20, 30, 50, 100, 150, 200)30
bundeslandstringAustrian federal state -- used when location is not set-
employmentTypestringVollzeit, Teilzeit, Freelance, Ausbildung, PraktikumAll
experienceLevelstringEinsteiger, Berufserfahren, FuhrungskraftAll
datePostedstringJobs posted within: 1, 7, or 30 daysAll
sortBystringSort order: date (newest first) or relevanceDefault
maxResultsPerQueryintegerMax results per search keyword100
maxResultsintegerTotal cap across all queries (0 = unlimited)0
includeJobDetailsbooleanVisit detail pages for full descriptionstrue
llmApiKeystringGroq/OpenRouter API key for AI extraction-
llmModelstringAI model: llama-3.1-8b-instant, mistral-smallnone
proxyConfigurationobjectApify proxy settingsDatacenter

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:

  1. location parameter (recommended): Pass any city name, region, or state name directly (e.g., "Wien", "Salzburg", "Graz"). This is the most flexible option.
  2. bundesland parameter: Pass a state name (e.g., "Tirol"). Only used when location is 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

  1. llama-3.1-8b-instant (Groq) - Fast and accurate, best for most use cases
  2. mistral-small-3.1-24b-instruct (OpenRouter) - Higher quality, slower

Get API keys:

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:

CodeBundeslandMajor Cities
WWienVienna
NONiederosterreichSt. Polten, Wiener Neustadt
OOOberosterreichLinz, Wels, Steyr
STSteiermarkGraz
TTirolInnsbruck
KKarntenKlagenfurt, Villach
SSalzburgSalzburg
VVorarlbergDornbirn, Bregenz, Feldkirch
BBurgenlandEisenstadt

Best Practices

  1. Use specific searches: Narrow queries yield better results
  2. Set reasonable limits: Start with 50-100 jobs for testing
  3. Enable job details: Full descriptions provide much richer data
  4. Use LLM extraction: For structured requirements and contact info
  5. Monitor costs: Check CU usage for large-scale scraping
  6. Use multi-keyword: Cover more ground with searchQueries array

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: true is 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 llmModel is not set to "none"
  • Ensure you have credits in your Groq/OpenRouter account

Support

For issues or questions:


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