Skip to content

πŸ’Ό Scrape freelancer profiles from Free-Work β€” 18 data fields, Streamlit UI, Excel export. Python + Selenium.

License

Notifications You must be signed in to change notification settings

SoCloseSociety/FreeWorkDataScraper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

8 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

FreeWork Data Scraper

Extract freelance missions, salaries & contracts from free-work.com at scale β€” Streamlit UI & CLI.

License: MIT Python 3.10+ Platform Selenium GitHub Stars Issues Forks

Quick Start β€’ Features β€’ Configuration β€’ FAQ β€’ Contributing


What is FreeWork Data Scraper?

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.

Who is this for?

  • 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

Key Features

  • 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

Quick Start

Prerequisites

Requirement Details
Python Version 3.10 or higher (Download)
Google Chrome Latest version (Download)

Installation

# 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.txt

Usage

Streamlit Web UI (recommended)

streamlit run app.py

This 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

Command Line

# 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

All CLI Options

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 β€”

How It Works

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 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Extracted Data Fields

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)

Excel Output

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)

Tech Stack

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

Project Structure

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

Troubleshooting

Chrome driver issues

The scraper uses webdriver-manager to automatically download the correct ChromeDriver. If you encounter issues:

pip install --upgrade webdriver-manager

No jobs found

If the scraper doesn't find any jobs:

  1. Verify the FreeWork URL is valid and returns results in your browser
  2. Try without --headless to see what's happening
  3. FreeWork may have changed its HTML structure β€” open an issue

Streamlit won't start

pip install --upgrade streamlit
streamlit run app.py

Excel export fails

Make sure openpyxl is installed:

pip install openpyxl

FAQ

Q: 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.


Alternatives Comparison

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

Contributing

Contributions are welcome! Please read the Contributing Guide before submitting a pull request.


License

This project is licensed under the MIT License.


Disclaimer

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.

Star this repo


Built with purpose by SoClose β€” Digital Innovation Through Automation & AI
Website β€’ LinkedIn β€’ Twitter β€’ Contact

About

πŸ’Ό Scrape freelancer profiles from Free-Work β€” 18 data fields, Streamlit UI, Excel export. Python + Selenium.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages