Bijgewerkt 22 april 2026
/api/v1/vacancies
curl -X GET \
"https://app.recruitsome.com/api/v1/vacancies" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"
const response = await fetch('https://app.recruitsome.com/api/v1/vacancies', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Accept': 'application/json',
},
});
const data = await response.json();
console.log(data);
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_KEY')
->acceptJson()
->get('https://app.recruitsome.com/api/v1/vacancies');
$data = $response->json();
Vacatures ophalen
Haal een gepagineerde lijst op van actieve vacaturepublicaties met filter- en sorteeropties.
Endpoint
GET /api/v1/vacancies
Query Parameters
| Parameter | Type | Standaard | Beschrijving |
|---|---|---|---|
page | integer | 1 | Paginanummer voor paginering |
per_page | integer | 20 | Items per pagina (max: 100) |
search | string | - | Zoeken in titel en samenvatting |
language | string | - | Filteren op taalcode (2 tekens) |
location_id | integer/array | - | Filteren op locatie-ID('s) |
department_id | integer/array | - | Filteren op afdeling-ID('s) |
job_types[] | array | - | Filteren op dienstverband-ID's |
education_levels[] | array | - | Filteren op opleidingsniveau-ID's |
tags[] | array | - | Filteren op tag-ID's (hoofdtags omvatten automatisch subtags) |
sort | string | published_at | Sorteerveld: published_at, title, created_at |
sort_direction | string | desc | Sorteerrichting: asc of desc |
include | string | - | Aanvullende gegevens meesturen: facets |
include_media | boolean | false | Headerafbeelding-URL's meesturen |
include_compensation | boolean | false | Basisgegevens over salaris meesturen |
include_company_name | boolean | false | Bedrijfsnaam opnemen in het company_location-object (opt-in vanwege privacy) |
company_location_id | integer/array | - | Filteren op bedrijfslocatie-ID('s) (werklocatie, voor uitzendbureau-tenants). Ondersteunt array-notatie: company_location_id[]=1&company_location_id[]=2 |
Responsevelden
| Veld | Type | Beschrijving | |
|---|---|---|---|
id | integer | Uniek ID van de vacaturepublicatie | |
slug | string | URL-vriendelijke identifier | |
title | string | Vacaturetitel | |
summary | string | Korte beschrijving (HTML) | |
language | string | Taalcode (ISO 639-1) | |
published_at | string | ISO 8601 publicatiedatum | |
ends_at | string\ | null | ISO 8601 vervaldatum |
views_count | integer | Aantal keer bekeken | |
location | object\ | null | Locatiegegevens (kantoor-/vestigingslocatie) |
company_location | object\ | null | Bedrijfslocatiegegevens (daadwerkelijke werklocatie, voor uitzendtenants) |
department | object\ | null | Afdelingsgegevens |
hiring_manager | object\ | null | Gegevens van de hiring manager |
education_levels | array | Vereiste opleidingsniveaus | |
job_types | array | Dienstverbandtypes | |
experience_levels | array | Ervarings-/senioriteitsniveaus (bijv. Junior, Medior, Senior, Lead) | |
work_arrangement | object\ | null | Werkmodel: op locatie, hybride of remote |
tags | array | Functiecategorietags (hoofd- en subcategorieën) | |
application_url | string | URL om te solliciteren op deze functie | |
metadata | object | Aanvullende vacaturemetadata | |
header_image | object\ | null | Headerafbeelding-URL's (alleen wanneer include_media=true) |
images | object\ | null | Overzicht van alle geconfigureerde afbeeldingsuitsneden (alleen wanneer include_media=true) |
compensation | object | Basiscompensatiegegevens (alleen wanneer include_compensation=true) |
Omgang met null-velden
De API bevat consequent de belangrijkste relatievelden (location, company_location, department, hiring_manager) in alle responses, ook wanneer ze geen waarde hebben:
null-waarde: Het veld bestaat maar bevat geen data (bijv. er is geen locatie aan de vacature gekoppeld)- Veld altijd aanwezig: Deze velden zijn gegarandeerd aanwezig in de responsestructuur
Deze voorspelbare structuur stelt je in staat om deze velden veilig te benaderen zonder te controleren of ze bestaan.
Objectstructuren
Locatieobject
{
"id": 123,
"name": "Amsterdam Office",
"city": "Amsterdam",
"country_code": "NL",
"country_name": "Netherlands"
}
Bedrijfslocatieobject
De werklocatie voor uitzendbureaus. Geeft null terug voor niet-uitzendtenants of wanneer er geen bedrijfslocatie is toegewezen.
{
"id": 789,
"name": "Shell Pernis Refinery",
"city": "Rotterdam",
"country_code": "NL",
"country_name": "Netherlands",
"company_name": "Shell Nederland B.V."
}
Het veld company_name wordt alleen meegestuurd wanneer include_company_name=true wordt meegegeven. Dit is opt-in om te voorkomen dat per ongeluk wordt onthuld voor welk opdrachtgeversbedrijf een uitzendbureau werft.
Afdelingsobject
{
"id": 456,
"name": "Engineering Department"
}
Hiring Manager-object
{
"given_name": "John",
"family_name": "Doe",
"full_name": "John Doe",
"job_title": "Engineering Manager",
"email": "[email protected]",
"avatar": {
"small": "https://...",
"medium": "https://...",
"large": "https://...",
"xlarge": "https://...",
"original": "https://..."
}
}
Opleidingsniveau-object
{
"id": 1,
"name": "Bachelor"
}
Dienstverbandtype-object
{
"id": 1,
"name": "Full-time"
}
Ervaringsniveau-object
{
"id": 3,
"name": "Senior"
}
Mogelijke waarden: Junior, Medior, Senior, Lead. Geeft een lege array terug wanneer er geen ervaringsniveau is toegewezen.
Werkmodel-object
{
"value": "Hybrid remote",
"label": "Hybride"
}
Het veld value bevat de canonieke identifier (on-site, Fully remote, Hybrid remote). Het label is de gelokaliseerde weergavenaam.
Tag-object
{
"id": 5,
"name": "Software Engineer",
"type": "sub",
"parent_id": 1
}
Het veld type geeft aan of de tag een main-categorie of een sub-categorie is. Hoofdtags hebben parent_id: null.
Metadata-object
{
"status": "active"
}
Compensatie-object (wanneer include_compensation=true)
Basisoverzicht van de compensatie voor de lijstweergave:
{
"salary_range": {
"min": 3500,
"max": 5000,
"currency": "EUR",
"period": "monthly"
},
"contract_hours": 40
}
Let op: voor volledige compensatiedetails (inclusief vakantiedagenspecificatie) gebruik je het detail-endpoint met include_compensation=true.
Headerafbeelding-object (Legacy, wanneer include_media=true)
{
"small": "https://...",
"medium": "https://...",
"large": "https://...",
"xlarge": "https://...",
"original": "https://..."
}
Afbeeldingen-object (wanneer include_media=true)
Overzicht van alle geconfigureerde afbeeldingsuitsneden. De sleutel 'default' komt overeen met de legacy header_image.
{
"default": {
"url": "https://...",
"width": 1200,
"height": 675,
"mime_type": "image/jpeg"
},
"narrow_casting": {
"url": "https://...",
"width": 1080,
"height": 1920,
"mime_type": "image/jpeg"
}
}
Pagination
Het antwoord bevat metadata voor pagination:
{
"data": [...],
"links": {
"first": "https://api.example.com/api/v1/vacancies?page=1",
"last": "https://api.example.com/api/v1/vacancies?page=5",
"prev": null,
"next": "https://api.example.com/api/v1/vacancies?page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 5,
"links": [...],
"path": "https://api.example.com/api/v1/vacancies",
"per_page": 20,
"to": 20,
"total": 94,
"facets": {...} // Only when include=facets
}
}
Facets
Wanneer include=facets wordt meegegeven, bevat de response geaggregeerde aantallen voor filtering:
{
"meta": {
"facets": {
"locations": [
{
"id": 1,
"name": "Amsterdam",
"count": 15,
"selected": false
}
],
"company_locations": [
{
"id": 10,
"name": "Shell Pernis",
"city": "Rotterdam",
"country_code": "NL",
"country_name": "Netherlands",
"count": 5,
"selected": false
}
],
"departments": [
{
"id": 5,
"name": "Engineering",
"count": 23,
"selected": false
}
],
"experience_levels": [
{
"id": 3,
"name": "Senior",
"count": 12,
"selected": false
}
],
"education_levels": [
{
"id": 8,
"name": "Bachelor",
"count": 28,
"selected": false
}
],
"job_types": [
{
"id": 1,
"name": "Full-time",
"count": 45,
"selected": false
}
],
"tags": [
{
"id": 1,
"name": "Engineering",
"count": 32,
"selected": false,
"sub_tags": [
{
"id": 5,
"name": "Software Engineer",
"count": 18,
"selected": false
},
{
"id": 6,
"name": "DevOps Engineer",
"count": 8,
"selected": false
}
]
}
],
"languages": [
{
"code": "en",
"name": "English",
"count": 38,
"selected": false
}
]
}
}
}
Let op: de tags-facet maakt gebruik van een hiërarchische structuur waarbij hoofdcategorieën geneste sub_tags bevatten. Bij het filteren op een hoofdtag worden alle bijbehorende sub-tags automatisch meegenomen.
Voorbeeldverzoek
Basisverzoek
curl -X GET https://api.example.com/api/v1/vacancies \
-H "Authorization: Bearer YOUR_API_TOKEN"
Met filters en opties
curl -X GET "https://api.example.com/api/v1/vacancies?search=developer&location_id=1&include_compensation=true&include=facets" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Voorbeeldrespons
{
"data": [
{
"id": 123,
"slug": "senior-developer-position",
"title": "Senior Software Developer",
"summary": "Join our team to build innovative solutions...",
"language": "en",
"published_at": "2024-01-15T09:00:00+00:00",
"ends_at": "2024-02-15T23:59:59+00:00",
"views_count": 42,
"location": {
"id": 1,
"name": "Amsterdam Office",
"city": "Amsterdam",
"country_code": "NL",
"country_name": "Netherlands"
},
"company_location": null,
"department": {
"id": 5,
"name": "Engineering"
},
"hiring_manager": {
"given_name": "John",
"family_name": "Doe",
"full_name": "John Doe",
"job_title": "Engineering Manager",
"email": "[email protected]",
"avatar": null
},
"education_levels": [
{
"id": 1,
"name": "Bachelor"
}
],
"job_types": [
{
"id": 1,
"name": "Full-time"
}
],
"tags": [
{
"id": 1,
"name": "Engineering",
"type": "main",
"parent_id": null
},
{
"id": 5,
"name": "Software Engineer",
"type": "sub",
"parent_id": 1
}
],
"application_url": "https://careers.example.com/senior-developer-position",
"metadata": {
"status": "active"
}
}
],
"links": {
"first": "https://api.example.com/api/v1/vacancies?page=1",
"last": "https://api.example.com/api/v1/vacancies?page=5",
"prev": null,
"next": "https://api.example.com/api/v1/vacancies?page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 5,
"path": "https://api.example.com/api/v1/vacancies",
"per_page": 20,
"to": 20,
"total": 94
}
}
Opmerkingen
- Alleen actieve publicaties van het interne kanaal worden geretourneerd
- Resultaten worden standaard gesorteerd op
published_atin aflopende volgorde - De lijstweergave bevat geen volledige functiebeschrijvingen, vereisten of aanbiedingen
- Gebruik het detail-endpoint om volledige vacature-informatie op te halen
- Arrays voor opleidingsniveaus, functietypes en tags kunnen leeg zijn als er geen zijn opgegeven
- Bij het filteren op een hoofdtag worden automatisch alle bijbehorende subtags meegenomen (cascade filtering)
- Salarisbedragen zijn in de basisvaluta-eenheid (bijv. 3500 = € 3.500)
- Het compensatiesalaris gebruikt de eigen velden van de vacature als primaire bron; uren vallen terug op de arbeidsvoorwaarden (CompanyRemuneration) als er geen uren op de vacature zijn ingesteld