Kununu Jobs
Search and filter job listings on Kununu with support for location, workplace model, employment type, career level, industry, discipline, benefits, and more.
Run this endpoint
Endpoint
https://scrappa.co/api/kununu/jobs?query=Software+Engineer&country=de&workplace%5B%5D=FULL_REMOTE
Parameters
string
Optional
Job title or keyword search (e.g., "Software Engineer")
Software Engineer
string
Optional
City or location name (e.g., "Berlin"). Pass a plain city name and the API will resolve it automatically.
Austin, Texas
string
Optional
Country code: de (Germany), at (Austria), ch (Switzerland). Default: de
de
integer
Optional
Page number for pagination (default: 1, 30 results per page)
1
integer
Optional
Search radius in km around location. Values: 10, 20, 30, 50, 100, 200
10
string
Optional
Sort order: "newest" (newest first), "kununuScore" (by company score). Default: relevance
relevance
array
Optional
Filter by workplace model: FULL_REMOTE (home office), PARTLY_REMOTE (hybrid), NON_REMOTE (on-site)
FULL_REMOTE
array
Optional
Filter by employment type: FULL_TIME, PART_TIME, INTERN, TEMPORARY, CONTRACTOR, SEASONAL, VOLUNTARY
["example"]
array
Optional
Filter by career level: 1 (student/intern), 2 (entry-level), 3 (experienced), 4 (manager), 5 (director), 6 (executive), 99 (apprentice)
["example"]
array
Optional
Filter by minimum company score range: "4-5", "3-4", "2-3", "1-2"
["example"]
array
Optional
Filter by industry ID (1-44). See Kununu Industries endpoint for full list.
["example"]
array
Optional
Filter by discipline/field of activity ID (1001-1022)
["example"]
array
Optional
Filter by company benefits: flexWorkingHours, pensionPlan, coaching, mobilePhone, internet, healthProgram, reachability, events, discounts, parking, car, meals, dogs, daycare, cantine, stockOptions, doctor, accessibility, material, clothes, transportation
["example"]
boolean
Optional
Only show Top Company badge holders (true/false)
true
Request Examples
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrappa.co/api/kununu/jobs?query=Software+Engineer&country=de&workplace%5B%5D=FULL_REMOTE",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: YOUR_API_KEY_HERE"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
<?php
use Illuminate\Support\Facades\Http;
$response = Http::timeout(30)
->withHeaders(['x-api-key' => 'YOUR_API_KEY_HERE'])
->get('https://scrappa.co/api/kununu/jobs?query=Software+Engineer&country=de&workplace%5B%5D=FULL_REMOTE');
if ($response->successful()) {
echo $response->body();
} else {
echo "Error: " . $response->status();
}
const options = {
method: 'GET',
headers: {
'x-api-key': 'YOUR_API_KEY_HERE'
}
};
fetch('https://scrappa.co/api/kununu/jobs?query=Software+Engineer&country=de&workplace%5B%5D=FULL_REMOTE', options)
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.text();
})
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
const axios = require('axios');
const options = {
method: 'GET',
url: 'https://scrappa.co/api/kununu/jobs?query=Software+Engineer&country=de&workplace%5B%5D=FULL_REMOTE',
headers: {
x-api-key: 'YOUR_API_KEY_HERE',
}
};
try {
const response = await axios(options);
console.log(response.data);
} catch (error) {
console.error('Error:', error.message);
}
require 'net/http'
require 'uri'
uri = URI.parse("https://scrappa.co/api/kununu/jobs?query=Software+Engineer&country=de&workplace%5B%5D=FULL_REMOTE")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == 'https'
request = Net::HTTP::Get.new(uri.request_uri)
request['x-api-key'] = 'YOUR_API_KEY_HERE'
begin
response = http.request(request)
puts response.body
rescue => e
puts "Error: #{e.message}"
end
import http.client
import json
conn = http.client.HTTPSConnection("scrappa.co")
headers = {
'x-api-key': 'YOUR_API_KEY_HERE',
}
try:
conn.request("GET", "/api/kununu/jobs?query=Software+Engineer&country=de&workplace%5B%5D=FULL_REMOTE", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
except Exception as e:
print(f"Error: {e}")
finally:
conn.close()
import requests
headers = {
'x-api-key': 'YOUR_API_KEY_HERE',
}
try:
response = requests.get('https://scrappa.co/api/kununu/jobs?query=Software+Engineer&country=de&workplace%5B%5D=FULL_REMOTE', headers=headers)
response.raise_for_status()
print(response.text)
except requests.exceptions.RequestException as e:
print(f"Error: {e}")
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;
public class ApiExample {
public static void main(String[] args) {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://scrappa.co/api/kununu/jobs?query=Software+Engineer&country=de&workplace%5B%5D=FULL_REMOTE")
.addHeader("x-api-key", "YOUR_API_KEY_HERE")
.build();
try (Response response = client.newCall(request).execute()) {
if (response.isSuccessful()) {
System.out.println(response.body().string());
} else {
System.out.println("Error: " + response.code());
}
} catch (IOException e) {
System.out.println("Error: " + e.getMessage());
}
}
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://scrappa.co/api/kununu/jobs?query=Software+Engineer&country=de&workplace%5B%5D=FULL_REMOTE", nil)
if err != nil {
fmt.Println("Error creating request:", err)
return
}
req.Header.Set("x-api-key", "YOUR_API_KEY_HERE")
resp, err := client.Do(req)
if err != nil {
fmt.Println("Error making request:", err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error reading response:", err)
return
}
fmt.Println(string(body))
}
#!/bin/bash
curl -X GET \
-H "x-api-key: YOUR_API_KEY_HERE" \
"https://scrappa.co/api/kununu/jobs?query=Software+Engineer&country=de&workplace%5B%5D=FULL_REMOTE"
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("x-api-key", "YOUR_API_KEY_HERE");
try
{
var response = await client.SendAsync(new HttpRequestMessage(HttpMethod.Get, "https://scrappa.co/api/kununu/jobs?query=Software+Engineer&country=de&workplace%5B%5D=FULL_REMOTE"));
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
import axios from 'axios';
async function run(): Promise<void> {
try {
const response = await axios({
method: 'GET',
url: 'https://scrappa.co/api/kununu/jobs?query=Software+Engineer&country=de&workplace%5B%5D=FULL_REMOTE',
headers: {
'x-api-key': 'YOUR_API_KEY_HERE',
},
});
console.log(response.data);
} catch (error) {
console.error('Error:', error);
}
}
void run();
use reqwest::Client;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Client::new();
let response = client
.get("https://scrappa.co/api/kununu/jobs?query=Software+Engineer&country=de&workplace%5B%5D=FULL_REMOTE")
.header("x-api-key", "YOUR_API_KEY_HERE")
.send()
.await?;
println!("{}", response.text().await?);
Ok(())
}
Response Schema
{
"success": true,
"data": [
{
"id": "job-uuid",
"title": "Senior Software Engineer",
"url": "https://www.kununu.com/job-postings/de/job-uuid",
"postedAt": "2026-03-01",
"city": "Berlin",
"region": "Berlin",
"stateCode": "DE-BE",
"employmentTypes": [
"JOB_EMPLOYMENT_FULLTIME"
],
"salary": null,
"recommendationRate": 72,
"company": {
"uuid": "company-uuid",
"name": "Example GmbH",
"slug": "example-gmbh",
"logo": "https://example.com/logo.png",
"score": 4.1,
"isTopCompany": false,
"industryId": 6,
"website": "https://example.com",
"countryCode": "de"
},
"kununuJobTitle": {
"id": 12345,
"title": "Softwareentwickler:in",
"salaryAverage": 68000,
"salaryLowerBound": 52000,
"salaryUpperBound": 90000,
"salaryDataPoints": 1234
}
}
],
"meta": {
"pagination": {
"currentPage": 1,
"lastPage": 68,
"totalJobs": 2040
},
"duration_ms": 234.56,
"cached": false,
"cached_at": null,
"warnings": []
}
}
Generate Code with AI
Copy a ready-made prompt with all the endpoint details, parameters, and example responses. Paste it into ChatGPT, Claude, or any AI assistant to instantly generate working code.