Onrender APIjobly-99l2.onrender.com ↗
Search and retrieve job offers aggregated from France Travail, LinkedIn, Indeed, and Jobly. Filter by domain, location, contract type, and remote policy.
What is the Onrender API?
This API exposes 2 endpoints for searching and retrieving job listings aggregated across Jobly (Nexter), France Travail, LinkedIn, and Indeed. The search_offers endpoint accepts up to five filters — including contract type, remote policy, and city — and returns a list of offer summaries with a total count. The get_offer endpoint returns full listing details including skills, salary, views, missions, and the original source platform.
curl -X GET 'https://api.parse.bot/scraper/1ef2c3ac-7806-4560-9ae9-a7738bb1b775/search_offers?query=marketing&domain=Marketing+%2F+Communication&remote=hybrid&location=Montpellier&contract_type=CDI' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace jobly-99l2-onrender-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Jobly Job Offers API — search, filter, and inspect French job listings."""
from parse_apis.jobly_job_offers_api import Jobly, Domain, Remote, ContractType, OfferNotFound
client = Jobly()
# Search for hybrid marketing jobs
for offer in client.offers.search(domain=Domain.MARKETING_COMMUNICATION, remote=Remote.HYBRID, limit=3):
print(offer.title, offer.company, offer.salary)
# Drill into one offer's full details
offer = client.offers.search(location="Montpellier", limit=1).first()
if offer:
detail = client.offers.get(id=offer.id)
print(detail.title, detail.skills, detail.application_count)
# Typed error handling for a missing offer
try:
client.offers.get(id="99999")
except OfferNotFound as exc:
print(f"Offer not found: {exc.offer_id}")
print("exercised: offers.search / offers.get / OfferNotFound")
Search and filter job offers from the Jobly aggregated job board. Returns a list of offer summaries with total count. When called without any parameters, returns all available offers. Supports filtering by free-text query, job domain, remote work policy, city location, and contract type. Results are not paginated — all matching offers are returned in a single response.
| Param | Type | Description |
|---|---|---|
| query | string | Free-text search query matching job titles, companies, and descriptions. |
| domain | string | Filter by job domain. |
| remote | string | Filter by remote work policy. |
| location | string | Filter by city name (e.g. 'Paris', 'Montpellier', 'Lyon', 'Toulouse', 'Bordeaux'). |
| contract_type | string | Filter by contract type. |
{
"type": "object",
"fields": {
"total": "integer — number of matching offers",
"offers": "array of offer summary objects"
},
"sample": {
"data": {
"total": 12,
"offers": [
{
"id": 1,
"type": "CDI",
"title": "Chargé de communication digitale",
"domain": "Marketing / Communication",
"remote": "hybrid",
"salary": "28 000 – 32 000 €/an",
"source": "France Travail",
"company": "Région Occitanie",
"featured": true,
"location": "Montpellier",
"education": "Bac+3",
"created_at": "2026-06-11T06:28:59.078Z",
"department": "34"
}
]
},
"status": "success"
}
}About the Onrender API
Searching Job Offers
The search_offers endpoint returns an array of offer summaries and a total integer count. Without any parameters it returns all available listings. You can narrow results with a free-text query (matched against titles, companies, and descriptions), a domain filter (e.g. Tech / Informatique, Commerce / Vente), a remote value (hybrid, onsite, or full_remote), a location city name such as Paris or Lyon, and a contract_type such as CDI, Stage, or Alternance. Filters can be combined.
Retrieving Full Offer Details
Passing an offer_id from search_offers results to get_offer returns a complete record. Response fields include id, title, type, domain, remote, salary, company, source (the originating platform), skills (an array of skill strings), views, and structured profile requirements and missions. The source field tells you whether the listing originated on Jobly itself, France Travail, LinkedIn, or Indeed.
Coverage and Scope
Listings cover French-market job postings. Location filtering accepts named French cities. Contract types reflect French employment categories (CDI, CDD, Stage, Alternance, Freelance). Domains span the major professional sectors aggregated by Jobly, including HR, marketing, tech, sales, and finance roles.
The Onrender API is a managed, monitored endpoint for jobly-99l2.onrender.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when jobly-99l2.onrender.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official jobly-99l2.onrender.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a French job search interface filtered by contract type (CDI, Stage, Alternance) and city.
- Aggregate tech job listings from multiple French platforms in a single feed using the
domainfilter. - Track listing popularity by comparing the
viewsfield across similar roles returned byget_offer. - Power a remote-work job board by filtering
search_offerswithremote=full_remote. - Extract required
skillsarrays from job postings to analyze in-demand competencies by sector. - Surface salary data from French job listings for compensation benchmarking tools.
- Identify which source platforms (France Travail, LinkedIn, Indeed, Jobly) dominate specific job domains.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Jobly (Nexter) have an official public developer API?+
What does the `source` field in `get_offer` tell me?+
Can I filter job offers by salary range?+
get_offer endpoint returns a salary string field per listing, but search_offers does not expose a salary-range filter parameter. You can fork this API on Parse and revise it to add a salary filter endpoint.Is there pagination support for large result sets from `search_offers`?+
total count alongside the offers array, but there are no documented page or offset parameters in the current spec. For large queries, results are returned as a single collection. You can fork this API on Parse and revise it to add pagination parameters.