WLW Search

Search for B2B suppliers, products, and services on wlw.de (Wer liefert was). Supports filtering by country, category, employee count, supplier type, location, price range, and more.

Endpoint

GET /api/wlw/search

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.

Parameters

q string Required

Search query (e.g., "agentur", "software", "logistik")

page integer Optional

Page number (default: 1)

per_page integer Optional

Results per page (1-50, default: 15)

country string Optional

Country code for site context: DE (Germany), AT (Austria), CH (Switzerland). Default: DE

countries string Optional

Filter results by country codes (comma-separated, e.g., "DE,AT")

category string Optional

Filter by category ID (returned in filters of search results)

supplier_type string Optional

Filter by supplier type (comma-separated, e.g., "producer,dealer,service_provider")

attributes string Optional

Filter by attribute codes (comma-separated, returned in filters)

verified boolean Optional

Only show verified suppliers (true/false)

top_responder boolean Optional

Only show top responders (true/false)

latitude number Optional

Location filter: latitude coordinate

longitude number Optional

Location filter: longitude coordinate

radius integer Optional

Location filter: search radius in km (requires latitude/longitude)

sort string Optional

Sort order: "relevance" (default), "recency", "trending", "distance" (requires location)

language string Optional

Language code (default: de)

Request Examples

<?php

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => "https://scrappa.co/api/wlw/search?q=agentur&country=DE",
    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/wlw/search?q=agentur&country=DE');

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/wlw/search?q=agentur&country=DE', 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/wlw/search?q=agentur&country=DE',
    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/wlw/search?q=agentur&country=DE")
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/wlw/search?q=agentur&country=DE", 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/wlw/search?q=agentur&country=DE', 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/wlw/search?q=agentur&country=DE")
        .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/wlw/search?q=agentur&country=DE", 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/wlw/search?q=agentur&country=DE"
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/wlw/search?q=agentur&country=DE"));
            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/wlw/search?q=agentur&country=DE',
            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/wlw/search?q=agentur&country=DE")
        .header("x-api-key", "YOUR_API_KEY_HERE")
        .send()
        .await?;

    println!("{}", response.text().await?);

    Ok(())
}

Response Schema

JSON Response 200 OK
{
    "success": true,
    "data": [
        {
            "id": "product-uuid",
            "name": "Digital Marketing Agentur",
            "description": "Full-service digital marketing agency...",
            "slug": "digital-marketing-agentur-12345678",
            "category": "616529",
            "price": {
                "min": 500,
                "currency": "EUR",
                "kind": "from"
            },
            "images": [
                {
                    "url": "https://example.com/image.png"
                }
            ],
            "sell_points": [
                "Professional team",
                "Fast delivery"
            ],
            "company": {
                "id": "12345678",
                "uuid": "company-uuid",
                "name": "Example GmbH",
                "slug": "example-gmbh-12345678",
                "logo": "https://example.com/logo.png",
                "country_code": "DE",
                "founding_year": "2010",
                "distribution_area": "international",
                "is_customer": true,
                "certificates_count": 3
            }
        }
    ],
    "meta": {
        "pagination": {
            "current_page": 1,
            "total_pages": 142,
            "per_page": 15,
            "total_results": 2129
        },
        "filters": {
            "categories": [],
            "countries": [],
            "employee_counts": [],
            "supplier_types": [],
            "attributes": []
        },
        "duration_ms": 345.67,
        "cached": false,
        "cached_at": null
    }
}

Try It Live

Test this endpoint in our interactive playground with real data.

Open in Playground