French IT Contract Market - Day Rates & Hiring Companies
Pricing
from $8.00 / 1,000 missions
French IT Contract Market - Day Rates & Hiring Companies
French IT contractor missions with structured day rates, plus what listings alone cannot give: median day rate per role and region, with p25, p75, sample size and the companies hiring. Deduplicated across Free-Work, Freelance-Informatique and Codeur. Incremental mode returns only new missions.
Pricing
from $8.00 / 1,000 missions
Rating
0.0
(0)
Developer
Koati Romeo
Maintained by CommunityActor stats
1
Bookmarked
7
Total users
4
Monthly active users
21 days ago
Last modified
Categories
Share
French IT Contract Market — Day Rates & Hiring Companies
Unofficial tool. Not affiliated with, endorsed by, or sponsored by Free-Work, Freelance-Informatique or Codeur.com.
French IT contractor missions, with the day rate attached — and the market statistics you cannot get by reading the listings one by one.
Most job scrapers hand you rows. This one also hands you the answer to the question those rows exist to support: what is the going day rate for this role, in this region, right now, and which companies are paying it.
What you get
1. Missions — one row per distinct mission, deduplicated across sources. Title, company, day rate (min/max/period/currency), city, region, remote mode, contract type, duration, skills, publication date, apply URL.
2. A day-rate benchmark — median, p25, p75, min, max, mean and sample size,
per role and per region, with the number of hiring companies and a sample of
their names. Written to the rate-benchmarks dataset and to the
RATE_BENCHMARK key-value record.
3. A run report — per-source counts and the real HTTP status code per host, so a blocked source is never confused with an empty one.
Sources
| Source | What it carries |
|---|---|
| Free-Work | The largest French IT contractor feed. Around 6,600 open contractor missions at the time of writing, with structured minimum and maximum day rates. |
| Freelance-Informatique | Missions from IT services firms and large accounts, often the same client reached through a different channel. |
| Codeur.com | SME project briefs with fixed budgets, plus the number of bids already placed on each. |
The same mission is frequently republished by several agencies. Rows that describe
one real mission are merged into a single row carrying seenOnSources and
timesPublished — so timesPublished: 3 tells you a mission is being pushed hard
through three channels, instead of showing you three rows that look like three
opportunities.
Example output
A mission:
{"title": "Intégrateur de Solutions Progiciels Fraude H/F","company": "Freelance.com","company_url": "https://www.free-work.com/fr/tech-it/company/freelance-com-11","rate_min": 400.0,"rate_max": 550.0,"rate_period": "day","currency": "EUR","rate_raw": "400.0-550.0 EUR/j","city": "Schiltigheim","region": "Grand Est","country": "France","remote": "partial","contracts": ["freelance", "cdi"],"duration": "12 months","experience_level": "expert","skills": ["Monitoring", "NAS", "Scripting"],"published_at": "2026-08-15T08:11:19+00:00","expires_at": "2026-08-20T21:59:59+00:00","url": "https://www.free-work.com/fr/tech-it/job-mission/architecte-solutions/integrateur-de-solutions-progiciels-fraude-h-f","source": "free-work","uid": "53b8779fd8c2d949c758","seenOnSources": ["free-work"],"timesPublished": 1,"recordType": "mission"}
A benchmark row:
{"role": "Developpeur Backend","region": "France (toutes regions)","currency": "EUR","ratePeriod": "day","sampleSize": 32,"median": 500.0,"p25": 450.0,"p75": 528.75,"min": 310.0,"max": 565.0,"mean": 478.44,"hiringCompanies": 12,"topCompanies": ["CELAD", "Craftman data", "Digistrat consulting", "Genwaves Group","ICSIS", "INFOTEL CONSEIL", "LeHibou", "OCTOGONE", "OMICRONE", "STHREE SAS"],"computedAt": "2026-08-15T12:16:48+00:00","recordType": "rate_benchmark"}
Roles are classified into 17 families (SRE/DevOps, Cloud/Infrastructure, Data
Engineer, Data Scientist/AI, BI/Analytics, Cybersecurity, Architect, Backend,
Frontend, Fullstack, Mobile, SAP/ERP, QA/Test, Network/System, Project Manager/PO,
Support, Database) and mapped to French administrative regions, plus Remote.
How the numbers are kept honest
No currency conversion, ever. A rate always travels with its own currency, and a benchmark group is one currency only. A wrong comparison is worse than a missing one.
No mixing of rate periods. Day rates, annual salaries and fixed project budgets are never averaged together.
No benchmark below the sample threshold. A median over two missions is an
anecdote. benchmarkMinSample defaults to 5, and groups below it are dropped
rather than published.
Implausible rates are corrected, not propagated. Some recruiters type an annual salary into the day-rate field — measured at 6 occurrences out of roughly 1,900 rated missions. Six rows are enough to print a "maximum day rate of €100,250". Those values are reclassified as annual, or dropped when they fit nothing.
Incremental mode
Set onlyNewSinceLastRun to true and the Actor remembers every mission it has
already returned, emitting only what is genuinely new. Built for scheduled
polling: you pay for new missions, not for the same ones every morning.
The benchmark is always computed on the full collection, never on the incremental subset — otherwise the median would be calculated from a handful of overnight postings.
The rate-benchmarks dataset is a named dataset, so it persists between runs and
accumulates. That is deliberate: with computedAt and runId on every row, a
daily schedule turns into a time series of the French IT rate market.
Pricing
| Event | Price |
|---|---|
mission-scraped | $0.008 per mission delivered |
rate-benchmark | $0.10 per role/region benchmark |
Nothing is charged that is not delivered.
| Scenario | Cost |
|---|---|
| Test run — 300 missions, 16 benchmarks | $4.00 |
| Full market snapshot — 6,600 contractor missions, ~94 benchmarks | $62.20 |
| Daily incremental — ~150 new missions, benchmarks off | $1.20 per day |
Set computeRateBenchmark to false if you only want the raw missions.
FAQ
Do I need a proxy? No. These sources answer from datacenter IPs. The proxy input exists only as a fallback.
Why do some missions have no rate? Because the source does not publish one. Roughly a third of Free-Work missions carry a structured day rate; the rest advertise the rate as negotiable. Nothing is invented to fill the gap.
Why is a role missing from the benchmark?
Either fewer than benchmarkMinSample missions matched it, or the missions that
matched carried no rate. Lower benchmarkMinSample — but read the sample size
before trusting a small group.
A source returned zero rows and the run still succeeded. Why?
If at least one source works, the run completes and the failure is reported per
source, with the HTTP status per host in RUN_REPORT. If every source fails, the
run fails loudly. One source breaking should not cost you the rest of the data.
A run returned nothing at all.
Free-Work rate-limits by IP silently — it answers 200 with zero rows rather
than 429. The Actor detects this and fails with an explicit message instead of
reporting an empty market. Raise requestDelaySeconds, or enable the proxy.
Known limits
- France only. Missions outside France appear when a French source publishes them, but the coverage is not built for other countries.
- Rate coverage is partial by nature — around a third of missions publish a structured rate. The benchmark is computed on those.
- Company names are the publisher, which for agency listings is the agency, not the end client. The end client is usually described but not named — that is how this market advertises.
- Role classification is keyword-based. A mission with an unusual title may
land in no role and be excluded from the benchmark;
missionsClassifiedin the run report tells you how many were classified.