FashionJobs France Jobs API + English Translation avatar

FashionJobs France Jobs API + English Translation

Pricing

$0.20 / 1,000 job results

Go to Apify Store
FashionJobs France Jobs API + English Translation

FashionJobs France Jobs API + English Translation

$0.2/1K jobs | Extract fashion, luxury and beauty jobs from FashionJobs France with full descriptions, city, contract type, posting and end dates. Filter by keyword and posting age. No login or API key. Optional English translation.

Pricing

$0.20 / 1,000 job results

Rating

0.0

(0)

Developer

Job Atlas

Job Atlas

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

7 days ago

Last modified

Categories

Share

FashionJobs France Scraper (No Login) + Full Descriptions

$0.2/1K jobs | Extract fashion, luxury and beauty jobs from FashionJobs France with full descriptions, city, contract type, posting and end dates. Filter by keyword and posting age. No login or API key. Optional English translation. Independent, unofficial tool. Not affiliated with or endorsed by FashionJobs.

FashionJobs France Jobs Bulk Scraper

Our scraper returns recent fashion, luxury and beauty jobs from the French site of FashionJobs (fr.fashionjobs.com) and lets you filter by keyword and posting age. Every row carries the complete original description in text and HTML, the employer, the city, the contract type, the posting date and the end date of the advert. It is ideal for fashion and luxury recruitment alerts, retail hiring analytics, and job boards or newsletters.

  • Need jobs outside France, or from other industries? Use our LinkedIn jobs scraper. It searches public LinkedIn postings by role and location and is not limited to fashion. LinkedIn can limit request rates, so large runs may end early.
  • Browse all Job Atlas job scrapers: https://apify.com/jobatlas

Key Benefits

  • No login or API key: nothing to set up, and no FashionJobs account involved. Runs read our stored copy of FashionJobs postings, so FashionJobs' site is not contacted during your run.
  • Low pricing: $0.20 per 1,000 jobs, with no start fee.
  • Full descriptions only: a posting without a verified complete description is never returned.
  • No repeats across runs: schedule the same search daily and get only postings you have not received yet.
  • Newest first in our test runs, so a small maxItems gets you the latest jobs.
  • Optional English translation and AI enrichment at the same price. Most descriptions are in French, and both options are off by default, with no API key to bring.

How It Works

  1. Provide your search. Every field is optional:
    • (optional) Keyword (e.g., sales, vendeur). A case-insensitive phrase matched against the job title, the employer and the complete description. Leave it empty to get the newest postings.
    • (optional) Posted within (e.g., 24h, 7d, 2w, 1m). Default is any; up to 36500 days. When FashionJobs gives no posting date, this uses the day our stored copy first saw the job.
    • (optional) Advanced filters over normalized fields, in the filters input.
  2. Set how many jobs you want with maxItems.
  3. Click Start. The form opens with sales and 10 jobs, so a first run returns real rows. The run's RUN-SUMMARY record shows when the stored data was last refreshed and how many jobs were delivered.

Run the same search again and you get only postings you have not received yet; set dedupe.enabled to false to see everything again.

More settings:

  • maxItems - Maximum jobs returned. Default is 100; 0 means 200, and 200 is the maximum.
  • dedupe - On by default: jobs already delivered to your Apify account for the same search are skipped. Set dedupe.enabled to false for a stateless run, or set dedupe.key to share or separate alert histories.
  • filters - A versioned filter over normalized fields. With AI enrichment off, only facts FashionJobs published are evaluated, and a job whose value is unknown never passes a comparison.
  • aiEnrichment and translateToEnglish - Optional processing, described below. Default is off.

This Actor serves the French site only. All 30 jobs we collected in three test runs came from fr.fashionjobs.com with a French location. It holds recent postings, not every offer on the site, and only postings with a verified complete description are served, so coverage can be smaller than FashionJobs' own listing. If the stored data is stale or unavailable, the run fails instead of returning old rows.

FashionJobs publishes no salary and no work arrangement in this data (none of the 30 test jobs had either), so leave workArrangements empty: setting it can leave you with few or no jobs.

Descriptions are in French for most jobs and in English for some. Switch on translateToEnglish if you need English text.

A very rare keyword can make a run fail with a timeout after about a minute. We saw this with London, while sales and an empty keyword returned jobs. If a run times out, search a more common word.

Data You'll Receive

  • Job details: title, the complete original description (text and HTML), posting date, end date of the advert, contract type (FULL_TIME, INTERN, TEMPORARY or OTHER).
  • Employer: name, its FashionJobs page and logo.
  • Location: the city and country code as FashionJobs prints them, for example PARIS, FR.
  • Links and identity: the FashionJobs advert URL, plus a stable identity.source and identity.externalId for deduplication.

The end date (data.application.deadline) is in UTC, so a French midnight shows as 23:00 UTC in winter (22:00 in summer) on the evening before. Missing facts are null, and a known empty list is [].

Sample output data

Here is an example job from this Actor. Long text is shortened for display:

{
"schemaVersion": "nomad-agent-job-v1",
"identity": {
"url": "https://fr.fashionjobs.com/emploi/cold-culture/Sales-assistant-20h-paris,12139356.html",
"source": "fashionjobs",
"externalId": "12139356"
},
"data": {
"title": "Sales Assistant 20h - Paris",
"company": {"name": "COLD CULTURE", "url": "https://fr.fashionjobs.com/recrutement/cold-culture.html"},
"locations": [{"raw": "PARIS, FR", "city": "PARIS", "countryCode": "FR"}],
"employment": {"contractTypes": ["FULL_TIME"]},
"application": {"postedAt": "2026-10-15T09:37:53Z", "deadline": "2026-11-21T23:00:00Z"}
},
"llm": {"status": "not_requested"},
"raw": {
"description": "COLD n'est pas juste du streetwear. C'est une attitude. C'est une culture. C'est une révolution. Nous sommes nés dans la rue, nous créons à partir d'une rage créative et nous avançons avec notre propre style. Chaque pièce parle clairement :… [shortened for display]",
"descriptionHtml": "COLD n'est pas juste du streetwear. C'est une attitude. C'est une culture. C'est une révolution.<br>\r\nNous sommes nés dans la rue, nous créons à partir d'une rage créative et nous avançons avec notre propre style. Chaque pièce parle clairem… [shortened for display]"
},
"custom": {"data": {"postingId": "12139356", "identifierIssuer": "FJOB"}}
}

Repeat-delivery suppression for alerts

Repeat suppression is on by default. It keeps a delivery history for your Apify account, scoped to this Actor and the search, and skips jobs you already received. Schedule one search per alert and keep the default key, or give two searches the same dedupe.key to share one history:

{"keyword": "vendeur", "dedupe": {"enabled": true, "key": "my-fashionjobs-alert"}}

If the delivery history cannot be read or written, the run fails instead of claiming a delivery it cannot confirm. You pay for jobs delivered, so skipped repeats are not part of the bill.

Optional AI enrichment and English translation

Turn on aiEnrichment.enabled to fill fields the posting leaves unknown, and translateToEnglish to get English display text. They are independent, both are off by default, and you do not supply any API key. They cost nothing extra: the price stays $0.20 per 1,000 jobs delivered.

  • AI enrichment fills unknown fields only and records its provenance in llm. It never overwrites a fact FashionJobs published. A job whose requested enrichment fails is withheld, so the run can return fewer jobs. With enrichment off, llm.status is not_requested.
  • Translation converts selected human-readable fields into English. raw.description and raw.descriptionHtml keep the original text.
  • Only when you switch them on, we send description text to OpenRouter for extraction, or selected display text to DeepL for translation. The routes we use deny provider data collection, but they do not guarantee zero retention or EU-only processing. We may cache sanitized extracted facts and translations.

FashionJobs Jobs API

Results are stored in a dataset that you can export as CSV, JSON or Excel, or read through the Apify API. Each run also writes a RUN-SUMMARY record to its key-value store. Setup guides and client examples are in the Job Atlas repository.

Support and Feedback

We improve these scrapers from your feedback. If something breaks or you need a filter:

  • Open an issue on the Actor's Issues tab.
  • If this Actor saved you time, a short review on the Store helps other people find it.

Run evidence

Observed runs

These runs used the latest build (1.0.6) on 2026-10-16, each capped at 10 jobs and each with a fresh one-off dedupe key, so they match a first-time visitor.

InputRunResult
keyword sales, maxItems 10bJ120KaBMf8FzVn6z10 jobs from 8 employers, all with a description in text and HTML
empty keyword, maxItems 10G8BC9rDtqMlexAK1O10 jobs from 3 employers (one employer posted 8 near-identical store jobs)
keyword vendeur, maxItems 101NaedxAHBt4XZIK7010 jobs, all store jobs of one employer
keyword LondonK5n12Bhd6qDcgHfq7 and 3S3sS7MQ335x7c1Keboth runs failed with a timeout (DeadlineRefused) after about a minute

In the 30 test jobs: description (text and HTML), city, country code, contract type and end date on all 30; no salary and no work arrangement on any.

Migrating from the previous release

Use nomad-agent-inventory-search-v1 for this job-search release. The previous release used different source-specific search inputs. Old inputs fail with migration guidance: replace them with keyword or supported normalized filters. The top-level accuracy field is a compatibility override for aiEnrichment.accuracy; it never switches enrichment on by itself.

identity.externalId is FashionJobs' own posting ID as represented in this output, and it may be spelled differently from earlier releases. The stable posting key is the pair (identity.source, identity.externalId). Update any comparison keys you stored; existing delivery history may allow a one-time repeat. The custom extension now carries FashionJobs facts under custom.schemaId (earlier releases used nomad-fashionjobs-source-v1 with a different shape), so custom.schemaId identifies the version of the custom.data shape. The other five roots keep the nomad-agent-job-v1 contract.

Input and output reference

Every dataset item follows nomad-agent-job-v1, with six roots: schemaVersion, identity, data, llm, raw and custom.

The RUN-SUMMARY record reports the data freshness (sourceFreshAt), the candidates found, repeats skipped (duplicateSuppressed), enrichment failures, the number delivered (emitted) and the terminal status. OWNER-USAGE separates actual provider costs from unpriced token counts when enrichment runs. Diagnostic records are not inserted into the jobs dataset.

Cost

You pay $0.0002 per job delivered, with no start fee and no separate enrichment or translation price. Apify platform usage for the run is included in that price. Ten jobs cost $0.002, 100 jobs cost $0.02 and the 200-job maximum costs $0.04.

Job Atlas

Job Atlas runs job-data and matching Actors. Use latest and keep the immutable build ID that each run returns.

Product guide | Source and client examples | Setup skill | Setup guide


Independent tool. We built and run this Actor ourselves. FashionJobs does not operate, sponsor or endorse it, and its name is used only to say which site the data comes from.