Extract freelance missions, salaries & contracts from free-work.com at scale β Streamlit UI & CLI.
Quick Start β’ Features β’ Configuration β’ FAQ β’ Contributing
FreeWork Data Scraper is a free, open-source freelance job scraper built with Python and Selenium. It extracts job postings from free-work.com at scale β collecting 18 data fields per job including title, company, salary/TJM, remote policy, duration, experience level, skills, and full descriptions.
The tool offers both a Streamlit web dashboard (recommended) with live progress and one-click downloads, and a CLI for scriptable automation. Output comes as professionally formatted Excel files or clean CSV.
- Freelancers monitoring the job market and tracking rates
- Recruiters building candidate pipelines and tracking demand
- Data Analysts studying freelance market trends and salary data
- Startup Founders researching talent availability and pricing
- HR Departments benchmarking contractor rates by skill
- Developers learning web scraping with Selenium and Streamlit
- 18 Data Fields - Title, company, salary/TJM, remote policy, duration, experience, skills, description, and more
- Streamlit Web UI - Visual dashboard with live progress, metrics, and one-click downloads
- CLI Mode - Scriptable command-line interface with full argument support
- Excel Export - Color-coded headers, salary highlighting, clickable links, auto-filters, summary sheet
- CSV Export - UTF-8 encoded, ready for any data tool
- Smart Pagination - Automatically detects and navigates all result pages
- SVG Icon Matching - Identifies job attributes by matching SVG icon paths
- Human-Like Behavior - Random delays between requests to avoid detection
- Cross-Platform - Works on Windows, macOS (Intel & Apple Silicon), and Linux
- Free & Open Source - MIT license, no API key required
| Requirement | Details |
|---|---|
| Python | Version 3.10 or higher (Download) |
| Google Chrome | Latest version (Download) |
# 1. Clone the repository
git clone https://github.com/SoCloseSociety/FreeWorkDataScraper.git
cd FreeWorkDataScraper
# 2. (Recommended) Create a virtual environment
python -m venv venv
# Activate it:
# Windows:
venv\Scripts\activate
# macOS / Linux:
source venv/bin/activate
# 3. Install dependencies
pip install -r requirements.txtstreamlit run app.pyThis opens a dashboard in your browser where you can:
- Paste a FreeWork search URL
- Configure max pages, headless mode, and export format
- Watch live progress with real-time logs
- View results in an interactive table
- Download Excel and CSV files directly
# Interactive mode β prompts for the URL
python main.py
# Direct URL mode
python main.py --url "https://www.free-work.com/fr/tech-it/jobs?query=python&contracts=contractor"
# With options
python main.py \
--url "https://www.free-work.com/fr/tech-it/jobs?query=devops" \
--max-pages 5 \
--format excel \
--output results \
--no-headless| Option | Description | Default |
|---|---|---|
--url, -u |
FreeWork search URL (with filters applied) | (interactive) |
--output, -o |
Output directory for exported files | output |
--format, -f |
Export format: both, excel, csv |
both |
--max-pages |
Max pages to scrape (0 = all) | 0 |
--headless |
Run Chrome in headless mode | On |
--no-headless |
Run Chrome with visible window | Off |
--version, -v |
Show version and exit | β |
FreeWork Search URL
β
βΌ
ββββββββββββββββββββββββββ
β 1. Navigate to URL β
β 2. Detect pagination β
β 3. Collect job links β
ββββββββββββββββββββββββββ€
β 4. Visit each job β
β 5. Parse 18 fields β
β 6. SVG icon matching β
ββββββββββββββββββββββββββ€
β 7. Export Excel/CSV β
β 8. Summary statistics β
ββββββββββββββββββββββββββ
| Field | Description |
|---|---|
| Title | Job posting title |
| Company | Company name |
| Company Location | Company city |
| Category | Job category (freelance, CDI, etc.) |
| Location | Mission location |
| Remote | Remote work policy |
| Salary / TJM | Daily rate or salary |
| Duration | Contract duration |
| Experience | Required experience level |
| Start Date | Mission start date |
| Publish Date | When the posting was published |
| Skills | Technologies and skills listed |
| Sector | Industry sector |
| Description | Full job description |
| Job URL | Link to the original posting |
| Page | Search result page number |
| Scraped At | Timestamp of extraction |
| Status | Extraction status (ok/error) |
The Excel export includes:
- Color-coded column headers grouped by category (identity, details, contract, dates, skills, content, meta)
- Salary highlighting β green for jobs with salary info, red for missing
- Remote highlighting β purple tint for jobs with remote policy
- Clickable URLs β job links are hyperlinked
- Auto-filters on all columns
- Frozen header row and first column
- Alternating row colors for readability
- Summary sheet with statistics (total jobs, salary %, remote %, experience breakdown)
| Technology | Role |
|---|---|
| Python 3.10+ | Core language |
| Selenium 4.20+ | Browser automation |
| BeautifulSoup4 | HTML parsing |
| lxml | Fast HTML parser backend |
| Pandas | Data manipulation & CSV export |
| openpyxl | Excel file creation & formatting |
| Streamlit | Web UI dashboard |
| webdriver-manager | Automatic ChromeDriver management |
FreeWorkDataScraper/
βββ main.py # CLI entry point
βββ app.py # Streamlit web UI
βββ requirements.txt # Python dependencies
βββ freework_scraper/
β βββ __init__.py # Package metadata (version, author)
β βββ config.py # Constants, CSS selectors, SVG icon paths
β βββ models.py # FreeWorkJob dataclass
β βββ scraper/
β β βββ browser.py # Selenium Chrome browser manager
β β βββ search.py # Search page navigation & pagination
β β βββ job_extractor.py # Job detail page parser
β βββ export/
β βββ exporter.py # CSV & Excel export with formatting
βββ assets/
β βββ banner.svg # Project banner
βββ LICENSE # MIT License
βββ README.md # This file
βββ CONTRIBUTING.md # Contribution guidelines
βββ .gitignore # Git ignore rules
The scraper uses webdriver-manager to automatically download the correct ChromeDriver. If you encounter issues:
pip install --upgrade webdriver-managerIf the scraper doesn't find any jobs:
- Verify the FreeWork URL is valid and returns results in your browser
- Try without
--headlessto see what's happening - FreeWork may have changed its HTML structure β open an issue
pip install --upgrade streamlit
streamlit run app.pyMake sure openpyxl is installed:
pip install openpyxlQ: Is this free? A: Yes. FreeWork Data Scraper is 100% free and open source under the MIT license.
Q: Do I need an API key? A: No. This tool uses browser automation (Selenium), no API key needed.
Q: How many jobs can I scrape?
A: No hard limit. The scraper extracts all jobs from all pages of your search results. Use --max-pages to limit.
Q: Can I export to Excel? A: Yes. The Excel export includes color-coded headers, salary highlighting, clickable links, and a summary statistics sheet.
Q: Does it work on Mac / Linux? A: Yes. Fully cross-platform on Windows, macOS (Intel & Apple Silicon), and Linux.
Q: Web UI or CLI? A: The Streamlit web UI is recommended for interactive use. The CLI is better for scripting and automation.
| Feature | FreeWork Data Scraper | Manual Copy-Paste | Paid Job Scrapers |
|---|---|---|---|
| Price | Free | Free | $50-200/mo |
| 18 data fields | Yes | Manual | Varies |
| Excel with formatting | Yes | No | Basic |
| Open source | Yes | N/A | No |
| Web UI dashboard | Yes | N/A | Yes |
| API key required | No | No | Yes |
| Cross-platform | Yes | Yes | Web only |
Contributions are welcome! Please read the Contributing Guide before submitting a pull request.
This project is licensed under the MIT License.
This tool is provided for educational and research purposes only. Scraping free-work.com may be subject to their Terms of Service. The authors are not responsible for any misuse or consequences arising from the use of this software.
If this project helps you, please give it a star!
It helps others discover this tool.
Built with purpose by SoClose β Digital Innovation Through Automation & AI
Website β’
LinkedIn β’
Twitter β’
Contact