Goodmoves Jobs Scraper
Pricing
Pay per event
Goodmoves Jobs Scraper
Scrape public Goodmoves charity and nonprofit job vacancies. Export titles, employers, salaries, locations, dates, apply links, descriptions and organisation metadata.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Scrape public Scottish charity and nonprofit job vacancies from Goodmoves.org.
Goodmoves Jobs Scraper turns Goodmoves search pages, browse pages, organisation pages, and direct vacancy URLs into clean structured job data.
It is built for recruiters, charity operations teams, labour-market researchers, salary benchmarkers, and automation teams that need Goodmoves data in CSV, JSON, Excel, Google Sheets, dashboards, or an API pipeline.
What does Goodmoves Jobs Scraper do?
It collects public vacancy data from Goodmoves.
It saves one dataset row per vacancy.
It can start from a Goodmoves URL that you already use in your browser.
It can also build a simple search URL from keywords and location.
It extracts listing-card fields and, when enabled, opens each vacancy detail page for richer data.
Who is it for?
🧑💼 Recruiters use it to monitor Scottish charity-sector hiring.
📊 Salary analysts use it to compare pay bands across employers and locations.
🏢 Nonprofit leaders use it to track competing vacancies and closing dates.
🧑🔬 Researchers use it to build repeatable labour-market datasets.
🤖 Automation teams use it to feed alerts, spreadsheets, CRMs, or BI tools.
Why use it?
Goodmoves is a focused source for charity, nonprofit, social care, housing, youth, fundraising, policy, and third-sector vacancies in Scotland.
Manual copying is slow.
Search results change frequently.
Vacancy pages contain useful structured metadata such as JobPosting JSON-LD.
This actor lets you schedule the same search and export normalized vacancy rows.
What data can it extract?
| Field | Description |
|---|---|
vacancyId | Goodmoves vacancy identifier when visible |
title | Vacancy title |
employer | Hiring organisation |
salary | Raw salary text |
salaryMin / salaryMax | Parsed salary bounds from JSON-LD when available |
location | Public location text or address fields |
workplaceType | Hybrid, remote, onsite, or related text when visible |
employmentType | Full time, part time, contract, or similar |
postedDate | Advertised date from vacancy metadata |
closingDate | Closing date/time |
detailUrl | Goodmoves vacancy URL |
applyUrl | Public apply URL when exposed |
applyEmail | Public apply email when exposed |
descriptionHtml | Description HTML |
descriptionText | Clean description text |
organisationProfileUrl | Goodmoves organisation profile URL |
organisationWebsite | Public organisation website when exposed |
oscrCharityNumber | Scottish charity number when exposed |
categories | Industry/category tags from JobPosting metadata |
sourceUrl | Listing/search URL that produced the row |
scrapedAt | Timestamp for the scrape |
How much does it cost to scrape Goodmoves jobs?
This Actor uses pay-per-event pricing.
There is a small $0.005 run start event and a per-vacancy event.
| Apify plan tier | Price per vacancy | Approx. cost per 1,000 vacancies |
|---|---|---|
| Free | $0.00023286 | $0.23 |
| Bronze | $0.00020249 | $0.20 |
| Silver | $0.00015794 | $0.16 |
| Gold | $0.00012149 | $0.12 |
| Platinum | $0.000080996 | $0.08 |
| Diamond | $0.000056697 | $0.06 |
Small test runs are inexpensive because you can keep maxItems low.
How to scrape Goodmoves jobs
-
Open a Goodmoves search page in your browser.
-
Copy the URL.
-
Paste it into
startUrls. -
Set
maxItemsto the number of vacancies you need. -
Keep
includeDetailsenabled if you want descriptions, posted dates, apply metadata, and organisation fields. -
Run the actor.
-
Export the dataset as CSV, JSON, Excel, or via API.
Input options
startUrls
Goodmoves search, browse, organisation, location, or direct vacancy URLs.
Examples:
https://goodmoves.org/search?keywords=fundraisinghttps://goodmoves.org/search?keywords=policyhttps://goodmoves.org/vacancy/a4sP1000001jSh7IAE/fundraising-communications-manager
keywords
Optional keyword text.
The actor builds a Goodmoves search URL for you.
location
Optional location text.
Use this when you want the actor to build a Goodmoves search URL.
maxItems
Maximum vacancy rows to save.
Use a small value for your first run.
maxPages
Maximum listing pages to scan.
This prevents accidental large crawls.
includeDetails
When true, the actor opens each vacancy page for full detail extraction.
Example input
{"startUrls": [{ "url": "https://goodmoves.org/search?keywords=fundraising" }],"maxItems": 25,"maxPages": 3,"includeDetails": true}
Example output
{"vacancyId": "a4sP1000001jSh7IAE","title": "Fundraising & Communications Manager","employer": "The Rock Trust","salary": "£38,716 – £43,600","location": "Edinburgh North and Leith, City of Edinburgh, EH1 3QY","employmentType": "Full time","postedDate": "2026-05-27T14:43:12","closingDate": "2026-06-10T22:59:00","detailUrl": "https://goodmoves.org/vacancy/a4sP1000001jSh7IAE/fundraising-communications-manager","descriptionText": "Mission Statement...","sourceUrl": "https://goodmoves.org/search?keywords=fundraising","scrapedAt": "2026-06-06T10:00:00.000Z"}
Tips for best results
Use Goodmoves URLs for advanced filters.
Keep includeDetails on for richer data.
Increase maxPages only when you need deeper result sets.
Schedule recurring runs for market monitoring.
Export CSV when sharing results with recruiting or operations teams.
Integrations
Send vacancies to Google Sheets for weekly hiring dashboards.
Load JSON into a data warehouse for salary benchmarking.
Trigger alerts when new jobs match fundraising, policy, finance, or support-worker keywords.
Connect the Apify dataset API to a CRM or Airtable base.
Use webhooks to start downstream workflows after each run.
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/goodmoves-jobs-scraper').call({startUrls: [{ url: 'https://goodmoves.org/search?keywords=fundraising' }],maxItems: 25,maxPages: 3,includeDetails: true,});console.log(run.defaultDatasetId);
API usage with Python
from apify_client import ApifyClientclient = ApifyClient('MY-APIFY-TOKEN')run = client.actor('automation-lab/goodmoves-jobs-scraper').call(run_input={'startUrls': [{'url': 'https://goodmoves.org/search?keywords=fundraising'}],'maxItems': 25,'maxPages': 3,'includeDetails': True,})print(run['defaultDatasetId'])
API usage with cURL
curl -X POST 'https://api.apify.com/v2/acts/automation-lab~goodmoves-jobs-scraper/runs?token=MY-APIFY-TOKEN' \-H 'Content-Type: application/json' \-d '{"startUrls":[{"url":"https://goodmoves.org/search?keywords=fundraising"}],"maxItems":25,"maxPages":3,"includeDetails":true}'
MCP usage
Use this actor from Claude Desktop, Claude Code, or another MCP client through Apify MCP.
MCP URL:
https://mcp.apify.com/?tools=automation-lab/goodmoves-jobs-scraper
Claude Code setup:
$claude mcp add apify-goodmoves "https://mcp.apify.com/?tools=automation-lab/goodmoves-jobs-scraper"
Claude Desktop JSON config:
{"mcpServers": {"apify-goodmoves": {"url": "https://mcp.apify.com/?tools=automation-lab/goodmoves-jobs-scraper"}}}
Example prompts:
- "Run the Goodmoves Jobs Scraper for fundraising vacancies and summarize salary bands."
- "Find Goodmoves policy jobs in Edinburgh and export the dataset URL."
- "Compare employers and closing dates from the latest Goodmoves scrape."
Scheduling
Create a schedule in Apify Console for recurring monitoring.
A daily or weekly schedule is useful for job-board changes.
Keep maxItems aligned with the volume you expect.
Data quality notes
Goodmoves pages vary by employer and vacancy.
Some jobs expose apply email, some expose only an external apply URL, and some route through Goodmoves.
OSCR charity numbers are saved only when visible in public page content.
Salary min and max are parsed from structured metadata when available.
FAQ
Can I scrape any Goodmoves search URL?
Yes. Paste a public Goodmoves search, browse, organisation, location, or vacancy URL into startUrls.
Does this actor need a proxy?
No proxy is configured for the MVP because Goodmoves returns public server-rendered HTML to normal HTTP requests.
Does it return one row per job?
Yes. Organisation metadata is merged into the vacancy row so CSV exports remain easy to use.
Troubleshooting
Why did I get fewer rows than maxItems?
The Goodmoves query may have fewer public vacancies, or maxPages may be too low.
Increase maxPages or provide a broader search URL.
Why are apply fields empty?
Some vacancies do not publish a direct apply email or external apply URL in public HTML.
The actor leaves those fields null instead of guessing.
Why is the location different from the visible card?
Detail pages may expose richer structured address fields than listing cards.
The actor prefers structured detail metadata when includeDetails is enabled.
Legality
This actor extracts publicly available Goodmoves pages.
You are responsible for using the data lawfully and respecting applicable terms, privacy rules, and data-protection obligations.
Do not scrape private accounts or use the data for prohibited purposes.
Related scrapers
Explore other automation-lab actors for recruiting, jobs, lead generation, company data, and web monitoring.
Use related Apify actors when you need LinkedIn Jobs, Indeed-style job boards, company websites, or broader lead discovery.
Changelog
Initial version supports Goodmoves search/listing/direct vacancy URLs, keyword and location filters, pagination limits, vacancy detail enrichment, and one-row-per-job output.