Download OpenAPI specification:
Spinweb API is a service provided by Spinweb B.V.
Base URL
https://api.spinweb.nlAuthentication
Provide your API key via the X-API-Key header (recommended) or the api_key query parameter.
Quick start
curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.spinweb.nl/feed?category=IT"
Development access (free)
A free Development key lets you build against the API without a paid
subscription. It is rate-limited to 50 calls per day and returns a fixed
demo snapshot: the 5 most recent opportunities posted ~30 days ago. The
snapshot is identical for every call within a UTC day, so it is ideal for
integration testing but not for production use. The pageSize and
pageNumber parameters are ignored for development keys.
Support: administratie@spinweb.nl
Spinweb API version 2, the current version of the feed. Added new parameters and response fields.
Get a list of opportunities. By default, this endpoint returns the last 100 items. You can filter the results based on the active status, source status, and updated date.
To retrieve historic postings in batches, use the postedSince and postedUntil parameters together to select a posting-date window (at most 35 days per request, going back up to 365 days). This is the recommended way to back-fill data month by month.
For some plugins, such as WordPress GoFetchJobs, you may need to use the nowrapper parameter to retrieve the list of opportunities without the wrapper.
This endpoint is serverless and the first request may take up to 20 seconds to receive a response.
| activeOnly | boolean Default: true Enum: true false Example: activeOnly=true Specifies whether to return only active opportunities.
|
| category required | string Enum: "administration" "business" "education" "engineering" "executive" "finance" "government" "health" "hr" "it" "legal" "marketing" "procurement" "recruitment" Example: category=hr The 'category' refers to the specific field or industry of the jobs you want to search for. This is a required parameter for your search. Please note, your API key must be associated with a valid license that allows access to job data related to the specified 'category'. |
| nowrapper | boolean Default: false Enum: false true Example: nowrapper=false set this item to true to prevent the response from adding the publisher wrapper. |
| pageSize | integer <int32> Default: 100 Enum: 10 20 50 100 250 500 1000 The number of items to display per page. Valid values are 10, 20, 50, 100, 250, 500 or 1000. The default value is 100. |
| pageNumber | integer <int32> >= 1 Example: pageNumber=1 The page number to get. Page numbers start at 1. |
| sourceOnly | boolean Default: false Enum: true false Example: sourceOnly=true Specifies whether to ony return opportunities with
|
| updatedSince | string <date-time> Example: updatedSince=2021-01-01T00:00:00Z Get opportunities updated since the given date/time (UTC). The date/time must be in ISO 8601 format. Example: |
| postedSince | string <date-time> Example: postedSince=2026-01-11T00:00:00Z Start of a posting-date window (UTC, inclusive) for historic/batch retrieval. The date/time must be in ISO 8601 format. Example: Use together with Both |
| postedUntil | string <date-time> Example: postedUntil=2026-02-10T00:00:00Z End of a posting-date window (UTC, inclusive) for historic/batch retrieval. The date/time must be in ISO 8601 format. Example: Use together with Both |
{- "data": {
- "publisher": "string",
- "publisherUrl": "string",
- "opportunities": [
- {
- "title": "Corporate Recruiter",
- "datePosted": "2024-03-01T15:18:52.738Z",
- "identifier": "1060578",
- "opportunityId": 709318,
- "url": "__BASE_URL__/opportunity/709318",
- "hiringOrganization": "Veiligheidsregio Gelderland-Midden",
- "hiringOrganizationId": 1836,
- "hiringOrganizationLogoUrl": "__IMAGE_URL__/development/images/1836",
- "industry": {
- "sbiCode": "84",
- "sbiDescription": "Openbaar bestuur, overheidsdiensten en verplichte sociale verzekeringen",
- "sectorId": 15,
- "sector": "Overheid (regionaal en lokaal)"
}, - "source": "app.inhuurdesk.nl",
- "sourceEmail": "",
- "sourceLogoUrl": "__IMAGE_URL__/development/images/1583",
- "sourceName": "Werken in Gelderland",
- "city": "Arnhem",
- "state": "Gelderland",
- "description": "Corporate Recruiter\r\nUtrecht\r\n32-40 uur per week\r\nJong en vooruitstrevend bedrijf\r\nOpdracht tot 29-02-2024\r\n\r\nAls corporate recruiter regel je alles van A tot Z als het gaat om het werven en selecteren van young professionals voor alle afdelingen van dit bedrijf. Dat klinkt eenvoudig, maar bij het maken van dé perfecte match komt veel kijken",
- "jobLocation": [
- {
- "addressCountry": "NL",
- "addressRegion": "Gelderland",
- "addressLocality": "Arnhem",
- "postalCode": "6811 BP",
- "streetAddress": "Utrechtse straat",
- "streetNumber": "1",
- "streetNumberAddOn": "A",
- "occupance": 1,
- "spacialLocation": {
- "type": "Point",
- "coordinates": [
- 5.12142,
- 52.0907
]
}
}
], - "salary": "103.87 - 111,63 EUR",
- "baseSalary": {
- "priceDescription": "Schaal 13 Segment Projectmanagement vanaf € 103,87 tot maximaal € 111,63",
- "price": 107.75,
- "minPrice": 103.87,
- "maxPrice": 111.63,
- "priceCurrency": "EUR",
- "unitText": "HOUR"
}, - "hoursPerWeek": 40,
- "hours": {
- "hoursDescription": "32-40 uur per week",
- "minHours": 32,
- "maxHours": 40,
- "unit": "week"
}, - "startDate": "2024-03-18T00:00:00.000Z",
- "endDate": "2024-09-18T00:00:00.000Z",
- "prolongation": true,
- "isActive": true,
- "isSource": true,
- "isZZPAllowed": true,
- "jobtype": "CONTRACTOR",
- "category": [
- "HR"
], - "experience": [
- "NotSpecified"
], - "validThrough": "6-12-2023",
- "language": "nl",
- "score": 1.96898710727692
}
], - "pagination": {
- "totalItems": 356,
- "currentItemCount": 100,
- "currentPage": 1,
- "pageSize": 100,
- "totalPages": 4
}
}
}| title | string The cleaned jobTitle of the opportunity. |
| datePosted | string The date when the opportunity was posted (or found by the source engine). |
| identifier | string The unique identifier for the opportunity used by the source. |
| opportunityId | integer The unique opportunity id used by flexfeed. Report this id in case of errors. |
| url | string The reply url for the opportunity. |
| hiringOrganization | string The name of the hiring organization offering the opportunity (hiring Organization). |
| hiringOrganizationId | integer The unique id of the hiring organization offering the opportunity. |
| hiringOrganizationLogoUrl | string The logo url of the hiring organization offering the opportunity. |
object or null (industry) The industry of the opportunity based on the hiringOrganization. The industry is a classification of the industry based on the hiringOrganization. | |
| source | string The source where the opportunity was found, mainly used for tracking purposes. |
| sourceEmail | string The email of the source where the opportunity was found. |
| sourceLogoUrl | string The logo url of the source where the opportunity was found. |
| sourceName | string The name of the source where the opportunity was found. |
| city | string Deprecated The parameter is deprecated. Use The city where the opportunity is located. |
| state | string Deprecated The parameter is deprecated. Use The state or province where the opportunity is located. |
| streetAddress | string Deprecated The parameter is deprecated. Use The street address where the opportunity is located. |
Array of objects list of locations where the opportunity is located. | |
| description | string A description of the opportunity. |
object (jobArticle) Schema representing a job article with detailed sections for job postings. | |
| telecommute | boolean Indicates if the opportunity is a telecommute or remote job. |
| numberOfPositions | integer The number of positions available for the opportunity. |
| salary | string The (max)salary or compensation for the opportunity. |
object The base salary for the opportunity. | |
object The min and max hours per week for the opportunity. | |
| hoursPerWeek | integer Deprecated The parameter is deprecated. Use The max number of hours per week for the opportunity. Default is 40. |
| startDate | string The start date of the opportunity in ISO 8601 format. Example '2024-03-01T00:00:00.000Z' |
| endDate | string The end date of the opportunity in ISO 8601 format. Example '2024-06-30T00:00:00.000Z' |
| prolongation | boolean Indicates if the opportunity can be prolonged or extended. |
| isActive | boolean Indicates if the opportunity is currently active. Jobs are set to active false 24 hours after the deadline expires. this allows for you to see recently expired jobs in your system. |
| isSource | boolean Indicates whether this opportunity record originates directly from the primary source system or platform. These are dynamic purchasing systems or end clients. If false, the opportunity may have been aggregated or sourced from a third-party platform or intermediary. |
| isZZPAllowed | boolean Indicates if ZZP (self-employed) is allowed for the opportunity. |
| isZZPOnly | boolean Indicates if the opportunity is only for ZZP (self-employed). |
| jobType | string The type of job for the opportunity, such as CONTRACTOR, PERMANENT, TEMPORARY, INTERNSHIP, or other relevant classifications. This field indicates the nature of the employment and should always return 'CONTRACTOR' for freelance or self-employed positions. |
| category | Array of strings (categoryEnum) Items Enum: "HR" "MARKETING" "ICT" "FIN" "SALES" "EDUCATION" "HEALTH" "ENGINEERING" "LEGAL" "ADMINISTRATION" "BUSINESS" The category or field of the opportunity. |
| seniorityLevel | Array of strings The required experience level for the opportunity. |
| validThrough | string The expiration date of the opportunity, indicating the last date applications will be accepted. Use ISO 8601 format (e.g., '2024-06-30T00:00:00.000Z') for consistency. |
| language | string The language in which the opportunity is offered or communicated. Use standard ISO 639-1 two-letter codes (e.g., 'nl' for Dutch, 'en' for English). |
| score | number The score or rating of the opportunity, only relevant if performing a search. |
{- "title": "Corporate Recruiter",
- "datePosted": "2024-03-01T15:18:52.738Z",
- "identifier": "1060578",
- "opportunityId": 709318,
- "url": "__BASE_URL__/opportunity/709318",
- "hiringOrganization": "Veiligheidsregio Gelderland-Midden",
- "hiringOrganizationId": 1836,
- "hiringOrganizationLogoUrl": "__IMAGE_URL__/development/images/1836",
- "industry": {
- "sbiCode": "84",
- "sbiDescription": "Openbaar bestuur, overheidsdiensten en verplichte sociale verzekeringen",
- "sectorId": 15,
- "sector": "Overheid (regionaal en lokaal)"
}, - "source": "app.inhuurdesk.nl",
- "sourceEmail": "",
- "sourceLogoUrl": "__IMAGE_URL__/development/images/1583",
- "sourceName": "Werken in Gelderland",
- "city": "Arnhem",
- "state": "Gelderland",
- "description": "Corporate Recruiter\r\nUtrecht\r\n32-40 uur per week\r\nJong en vooruitstrevend bedrijf\r\nOpdracht tot 29-02-2024\r\n\r\nAls corporate recruiter regel je alles van A tot Z als het gaat om het werven en selecteren van young professionals voor alle afdelingen van dit bedrijf. Dat klinkt eenvoudig, maar bij het maken van dé perfecte match komt veel kijken",
- "jobLocation": [
- {
- "addressCountry": "NL",
- "addressRegion": "Gelderland",
- "addressLocality": "Arnhem",
- "postalCode": "6811 BP",
- "streetAddress": "Utrechtse straat",
- "streetNumber": "1",
- "streetNumberAddOn": "A",
- "occupance": 1,
- "spacialLocation": {
- "type": "Point",
- "coordinates": [
- 5.12142,
- 52.0907
]
}
}
], - "salary": "103.87 - 111,63 EUR",
- "baseSalary": {
- "priceDescription": "Schaal 13 Segment Projectmanagement vanaf € 103,87 tot maximaal € 111,63",
- "price": 107.75,
- "minPrice": 103.87,
- "maxPrice": 111.63,
- "priceCurrency": "EUR",
- "unitText": "HOUR"
}, - "hoursPerWeek": 40,
- "hours": {
- "hoursDescription": "32-40 uur per week",
- "minHours": 32,
- "maxHours": 40,
- "unit": "week"
}, - "startDate": "2024-03-18T00:00:00.000Z",
- "endDate": "2024-09-18T00:00:00.000Z",
- "prolongation": true,
- "isActive": true,
- "isSource": true,
- "isZZPAllowed": true,
- "jobtype": "CONTRACTOR",
- "category": [
- "HR"
], - "experience": [
- "NotSpecified"
], - "validThrough": "6-12-2023",
- "language": "nl",
- "score": 1.96898710727692
}