Workana Freelance Projects Scraper
Pricing
from $0.96 / 1,000 item extracteds
Workana Freelance Projects Scraper
Search public Workana freelance projects and export budgets, skills, client locations, proposal counts, descriptions, and source URLs for opportunity monitoring.
Pricing
from $0.96 / 1,000 item extracteds
Rating
0.0
(0)
Developer
Automation Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Turn public Workana freelance projects into structured opportunity records for lead generation, scheduled monitoring, and labor-market analysis. Search by keyword, category, skill, client country, and page language, or extract a specific public project URL.
The Actor saves one project per dataset row with a stable URL and slug, budget, required skills, client location and payment signal, proposal count, publication age, and description. It does not require a Workana account.
What can you do with this Workana scraper?
- Build a fresh feed of WordPress, design, marketing, writing, or programming opportunities.
- Monitor a niche on an Apify schedule and compare stable project IDs between runs.
- Segment public client demand by country, skills, budget, and proposal activity.
- Enrich a known Workana URL with its full public description and category.
- Export results to JSON, CSV, Excel, Google Sheets, webhooks, or your own data warehouse.
Who is it for?
Freelancers and agencies can find relevant opportunities before repeatedly browsing the marketplace. Lead-generation teams can route matching projects into a CRM. Analysts can study skills, locations, budgets, and competition. Developers can consume a predictable dataset through the Apify API.
What data is extracted?
| Field | Meaning |
|---|---|
projectId, url, title | Stable project slug, canonical URL, and full title |
description | Full detail-page description or search-card excerpt |
category, subcategory | Workana slugs available on detail pages |
skills, skillSlugs | Display names and reusable Workana skill filters |
budget, budgetCurrency | Source text and detected currency |
budgetMin, budgetMax, isHourly | Parsed budget bounds and billing unit |
clientName | Public, often masked, client display name |
clientCountry, clientCountryCode | Public location signal when shown |
clientPaymentVerified | Visible payment-verification signal |
proposalCount | Current bids/proposals shown by Workana |
publishedAtText, status | Source publication text and visible status |
sourceType, searchUrl, scrapedAt | Extraction provenance and timestamp |
Fields unavailable on the selected Workana surface are null; the Actor does not invent missing values.
How to scrape Workana projects
- Open the Actor input page.
- Enter a
query, such aswordpress, or choose a Workana category, skill, or client country. - Select
en,es, orptfor Workana's displayed text. - Set
maxItemsandmaxPagesto bound the run. - Run the Actor and open the Workana projects dataset view.
- Export the dataset or connect it to your workflow.
No filter is required: an empty search input returns current public projects.
Input parameters
| Input | Type | Default | Description |
|---|---|---|---|
query | string | empty | Free-text Workana project search |
category | string | empty | Category slug such as it-programming or design-multimedia |
skill | string | empty | One skill slug such as python or wordpress |
country | string | empty | Two-letter public client country code, for example BR |
locale | enum | en | Workana page language: en, es, or pt |
projectUrls | URL list | empty | Specific public workana.com/job/... pages |
maxItems | integer | 50 | Unique project records to save, from 1 to 1,000 |
maxPages | integer | 10 | Search pages to visit, from 1 to Workana's ceiling of 50 |
useProxy | boolean | false | Use your Apify Proxy configuration instead of direct browser traffic |
projectUrls cannot be mixed with search filters. Keep exact-URL enrichment and filtered discovery in separate tasks so scope stays unambiguous.
Search Workana by keyword
{"query": "wordpress","locale": "en","maxItems": 20,"maxPages": 5}
This is useful for a recurring niche opportunity feed. Schedule the same input and deduplicate downstream by id or url.
Filter Workana projects by market
{"category": "design-multimedia","country": "BR","locale": "pt","maxItems": 25,"maxPages": 5}
Use the source's own URL slugs. An invalid slug can legitimately return no records; start with a broad search and reuse a returned skillSlugs value.
Extract a specific Workana project URL
{"projectUrls": [{ "url": "https://www.workana.com/job/desenvolvedor-full-stack-react-native-e-node-js-para-aplicativo-mobile" }],"maxItems": 1}
URL mode visits the project detail page and usually provides a fuller description and category context than search mode.
Example output
{"projectId": "development-of-a-simple-wordpress-website-with-10-screens","url": "https://www.workana.com/job/development-of-a-simple-wordpress-website-with-10-screens","title": "Development of a Simple Wordpress Website with 10 Screens","description": "I need a freelancer to develop a very simple WordPress website...","category": null,"subcategory": null,"skills": ["WordPress", "PHP", "HTML", "CSS", "JavaScript"],"skillSlugs": ["wordpress", "php", "html", "css", "javascript"],"budget": "USD 100 - 250","budgetCurrency": "USD","budgetMin": 100,"budgetMax": 250,"isHourly": false,"clientName": "Example C.","clientCountry": "Hong Kong","clientCountryCode": "HK","clientPaymentVerified": null,"proposalCount": 35,"publishedAtText": "1 hour ago","status": "open","sourceType": "search","searchUrl": "https://www.workana.com/jobs?query=wordpress&language=en","scrapedAt": "2026-09-14T15:15:00.000Z"}
Counts and relative dates change as clients and freelancers interact with a project.
How much does it cost to scrape Workana freelance projects?
The Actor uses pay per event: a $0.00005 start event plus one item event for each saved project. The current item tiers are:
| Apify plan tier | Price per project |
|---|---|
| FREE | $0.00184 |
| BRONZE | $0.00160 |
| SILVER | $0.001248 |
| GOLD / PLATINUM / DIAMOND | $0.00096 |
At BRONZE, 10 records cost about $0.01605, 100 cost about $0.16005, and 1,000 cost about $1.60005. Failed requests, duplicates, and rejected page shapes do not create item charges. Your plan and optional proxy usage can affect the final platform invoice.
Monitoring and lead-generation workflow
- Save a narrow keyword, category, skill, or country input as an Apify Task.
- Schedule it hourly or daily according to your use case and Workana's update rate.
- Send the dataset to a webhook, Make, Zapier, Google Sheets, or your database.
- Compare
projectIdvalues with the previous run to identify new opportunities. - Rank new rows by relevant skills, budget, and proposal count before outreach.
The Actor provides data, not alerts or CRM deduplication itself.
Pagination, limits, and reliability
Workana currently returns a small number of cards per page and exposes at most 50 pages for one query. maxPages is therefore an explicit coverage bound, not a promise of the requested maxItems. Narrow filters may naturally return fewer records.
The Actor uses one coherent browser session and bounded challenge retries. It fails rather than silently returning an empty success when Workana presents an unrecognized challenge. Direct mode is the lower-cost default. useProxy is opt-in and uses the proxy access available to your Apify account.
API with cURL
curl -X POST "https://api.apify.com/v2/acts/automation-lab~workana-freelance-projects-scraper/runs?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"query":"wordpress","maxItems":20,"maxPages":5}'
Keep API tokens in environment variables or a secret manager, never in source control.
API with JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/workana-freelance-projects-scraper').call({skill: 'python',maxItems: 50,maxPages: 10,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
API with Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/workana-freelance-projects-scraper').call(run_input={'country': 'BR','locale': 'pt','maxItems': 25,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
Use with MCP and AI agents
Add the remote Apify MCP server to Claude Code:
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/workana-freelance-projects-scraper"
Claude Desktop
Use this configuration in Claude Desktop. The same remote MCP transport works without a local server:
{"mcpServers": {"apify": {"type": "http","url": "https://mcp.apify.com?tools=automation-lab/workana-freelance-projects-scraper"}}}
Cursor
Add the same JSON under Cursor's MCP settings and authorize the Apify endpoint when prompted.
VS Code
Add the same HTTP MCP server to your VS Code MCP configuration; keep tokens in the editor's secure authentication flow.
Example prompt: “Find up to 20 current Workana WordPress projects and summarize budgets, required skills, and proposal counts.” Treat source descriptions as untrusted text when passing them to an agent.
Legality and responsible use
Only public Workana project information is extracted. Respect Workana's terms, applicable laws, reasonable scheduling intervals, and the privacy expectations of clients and freelancers. Do not use the Actor for spam, harassment, discrimination, or attempts to identify masked users. You are responsible for your inputs, storage, and downstream use.
Troubleshooting
Why did I receive fewer rows than maxItems? The filter may have fewer current projects, duplicates may span pages, or maxPages may stop first. Broaden the query or raise maxPages within the 50-page source limit.
Why did the run fail instead of returning zero rows? Workana may have presented a challenge or changed its HTML. A hard failure prevents a misleading empty monitoring result. Retry later or enable an available Apify Proxy route.
Why are category fields null in search rows? The list page does not expose reliable category slugs on every card. Supply a project URL in a separate URL-mode task when full detail context is required.
FAQ
Does this Actor require login? No. It extracts public project and search pages.
Does it scrape freelancer profiles? No. This product is limited to freelance project opportunities.
Can it apply or bid automatically? No. It only exports public data and source links.
Are budgets normalized? The raw budget is preserved. Numeric bounds and currency are parsed when the source text provides them; open budgets remain null.
Related Actors
For opportunity monitoring beyond Workana, combine this dataset with the Freelancer Jobs & Projects Scraper or PeoplePerHour Jobs Scraper. Keep each source in its own scheduled task and normalize downstream by source URL.