ASVA Jobs Scraper
Pricing
from $1.00 / 1,000 results
ASVA Jobs Scraper
Scrape the asva.co.uk Scottish visitor-attraction jobs board. RSS + detail-page enrichment: organisation, salary (parsed), location, job type, role type, full description. Castles, museums, distilleries, hotels — hospitality and tourism hiring. JSON or CSV out.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Turn the asva.co.uk visitor-attraction jobs board into structured Scottish hospitality & tourism hiring data. Reads the public RSS feed for fast listing, then enriches each row by fetching the detail page for organisation, salary, location, job type, and role-type taxonomies. JSON or CSV out, no compute charge per run, just per result.
How it works

✨ Why use this scraper?
The Association of Scottish Visitor Attractions (ASVA) hosts a jobs board for its members — galleries, museums, castles, distilleries, gardens, hotels, parks. Tracking who's hiring across Scottish tourism? Benchmarking visitor-attraction pay? Sourcing for seasonal openings?
- 🎯 Two starting points. The
/jobs/feed/RSS feed (default), the/jobs/archive page, or any single/jobs/<slug>/URL. - ⚡ RSS feed as the primary source. One HTTP call returns the 10 most recent jobs with title, link, pubDate, author, description, and full content HTML — no pagination needed.
- 🏛️ Detail-page enrichment (one-fetch-per-job).
.job-headerblock carries organisation (e.g. National Galleries of Scotland), salary (e.g. £27,362 per annum), and location (e.g. Edinburgh). Body class carries job-type + role-type taxonomies. - 💰 Salary parsed. Free-text salary strings are decomposed into
{currency, min, max, raw}when possible —salary.rawalways preserves the original. - 🇬🇧 Scottish visitor attractions. National Trust Scotland, NGS, Historic Environment Scotland, distilleries, gardens, castles, museums, hotels.
- 📤 Clean exports. One row per vacancy with merged RSS + detail-page enrichment. JSON + CSV exported automatically.
🎯 Use cases
| Team | What they build |
|---|---|
| Visitor attractions (NGS, NTS, HES, distilleries) | Cross-sector seasonal hiring intelligence |
| Hospitality recruitment | Daily new-vacancy feeds for visitor-services / catering / cleaning roles |
| Tourism researchers | Scottish tourism labour-market datasets |
| Workforce strategy / funders | Visitor-attraction pay benchmarks across the sector |
| Sector publications | Auto-populate "jobs in Scottish tourism" landing pages |
📥 Supported inputs
| URL pattern | Behaviour |
|---|---|
https://www.asva.co.uk/jobs/feed/ | RSS feed (default) — 10 most recent items |
https://www.asva.co.uk/jobs/ | Jobs archive page — routed to the RSS feed for consistency |
https://www.asva.co.uk/jobs/<slug>/ | Single job — synthetic RSS stub + detail-page fetch |
Leave startUrls empty for the default RSS feed.
Not supported: filtering via the archive's ?role= / ?job= query strings (RSS doesn't paginate this way); hosts outside asva.co.uk.
🔄 How it works
- Bucket each
startUrlas RSS feed vs direct detail URL. - Fetch the RSS feed — get up to 10 items per request with title, link, pubDate, author, full content HTML.
- For each item, optionally fetch the
/jobs/<slug>/detail page (one HTTP call per job). - Parse
.job-headerforOrganisation,Salary,Location— labelled text extraction. - Pull body classes
job-type-<type>androle-type-<role>— humanised back to "Full Time" / "Visitor Services" etc. - Push one merged row per vacancy with RSS + detail-page enrichment.
⚙️ Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | array | ["https://www.asva.co.uk/jobs/feed/"] | RSS feed, archive page, or single-job URLs. Empty = default feed. |
enrichDetail | boolean | true | When true, fetches each /jobs/<slug>/ page for organisation/salary/location/job-type/role-type. Disable for RSS-only output. |
postedWithinHours | integer | (none) | Only return rows posted in the last N hours (24 = last day, 72 = last 3 days). Empty/0 = all. Ideal for daily monitoring runs that only want fresh postings. |
maxItems | integer | 1000 | Hard cap on rows pushed (RSS returns the 10 most recent). |
maxConcurrency / minConcurrency | integer | 5 / 1 | Parallel detail-page fetch limits. |
maxRequestRetries | integer | 5 | Retries before a failed request is given up. |
proxy | object | No proxy | Site does not anti-bot — proxy optional. |
📊 Output overview
Each scraped vacancy is one single dataset row of type: "job". RSS-derived fields (title, link, pubDate, content HTML) are merged with detail-page enrichment (organisation, salary, location, taxonomies).
📦 Output sample
{"type": "job","source": "asva.co.uk","jobId": "19998","slug": "security-attendant-5","jobUrl": "https://www.asva.co.uk/jobs/security-attendant-5/","title": "Security Attendant","description": "<p>Full-time and Permanent<br />Salary £27,362 per annum plus 20% shift allowance…</p>","descriptionText": "Full-time and Permanent\nSalary £27,362 per annum plus 20% shift allowance…","companyName": "National Galleries of Scotland","companyWebsite": null,"companyDomain": null,"companyTagline": null,"location": "Edinburgh","remote": false,"salary": {"currency": "GBP","min": 20,"max": 27362,"raw": "£27,362 per annum plus 20% shift allowance of £5,472 per annum"},"salaryRaw": "£27,362 per annum plus 20% shift allowance of £5,472 per annum","categories": ["Visitor Services"],"employmentTypes": ["Full Time"],"contractType": "Full Time","roleType": "Visitor Services","status": "publish","postedDate": "2026-05-19T15:45:02.000Z","modifiedDate": null,"applyType": "internal","applyUrl": "https://www.asva.co.uk/jobs/security-attendant-5/","applyEmail": null,"externalApplyUrl": null,"authorName": "Pauline Martin","scrapedAt": "2026-05-20T00:13:00.000Z"}
🗂 Key output fields
| Group | Fields |
|---|---|
| Identifiers | type, source, jobId, slug, jobUrl, scrapedAt |
| Content | title, description (HTML, from RSS content:encoded), descriptionText (plain) |
| Dates | postedDate (ISO from RSS pubDate), modifiedDate |
| Employer | companyName (from .job-header > Organisation), companyTagline |
| Location | location (from .job-header > Location), remote |
| Compensation | salary.{currency, min, max, raw}, salaryRaw (always preserves original) |
| Taxonomies | categories[] (from role-type-* body class), employmentTypes[] (from job-type-*), contractType, roleType |
| Apply flow | applyType, applyUrl, applyEmail, externalApplyUrl |
| WordPress meta | authorName (RSS dc:creator) |
❓ FAQ
Why is salary.min/max sometimes weird (e.g. picks up 20% as a number)?
The salary parser extracts ALL numbers from the raw string. For "£27,362 per annum plus 20% shift allowance" you'll see min: 20, max: 27362. The salary.raw field is always correct — use it when the structured parse looks off.
Why only 10 jobs per run? ASVA's RSS feed returns the 10 most recent. The actor doesn't walk the archive's HTML pagination because the markup is inconsistent. For more, watch the feed daily and dedup downstream.
Why is applyType usually "internal"?
ASVA job posts often don't include an mailto: or outbound URL in the body — applicants click the "Apply" button on the ASVA page itself which routes via JS. The actor preserves the ASVA URL in applyUrl for downstream redirect.
Can I scrape private pages or applicant data?
No. Only the public RSS feed and public /jobs/<slug>/ pages.
How do I limit results?
Set maxItems. Disable enrichDetail to skip per-job HTTP calls (10 jobs in 1 fetch).
💬 Support
- For issues or feature requests, please use the Issues tab on the actor's Apify Console page.
- Author's website: https://muhamed-didovic.github.io/
- Email: muhamed.didovic@gmail.com
🛠 Additional services
- Custom output shape, additional fields, or one-off datasets: muhamed.didovic@gmail.com
- Similar scrapers for other regional Scottish job boards (highlandjobs.scot, s1jobs, Goodmoves): drop an email.
- For API access (no Apify fee, just usage): muhamed.didovic@gmail.com
🔎 Explore more scrapers
See other scrapers at memo23's Apify profile — covering job boards, real estate, social media, and more.
⚠️ Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by the Association of Scottish Visitor Attractions (ASVA), asva.co.uk, or any of their subsidiaries or affiliates. All trademarks mentioned are the property of their respective owners.
The scraper accesses only the publicly available RSS feed and public job pages on asva.co.uk — no authenticated endpoints, recruiter-only features, or content behind a login. Users are responsible for ensuring their use complies with asva.co.uk's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organisation.
SEO Keywords
asva scraper, scrape asva.co.uk, asva jobs api, association of scottish visitor attractions scraper, scottish visitor attractions jobs api, scottish hospitality jobs scraper, scottish tourism jobs scraper, Apify asva, national trust scotland jobs scraper, national galleries scotland jobs api, scottish heritage jobs scraper, scottish seasonal jobs data, visitor attraction recruitment data, rss feed scraper, scottish museum jobs api, scottish distillery jobs scraper, highlandjobs alternative scraper, s1jobs alternative scraper, goodmoves alternative scraper, scottish hiring trends data