# Scrappa — Full API Reference for LLMs > Scrappa is a web scraping API platform providing structured JSON data from 30+ sources (Google, YouTube, LinkedIn, Trustpilot, etc.) through 80+ endpoints — at a fraction of the cost of alternatives like SerpAPI. ## Authentication All requests require an API key via the `X-API-KEY` header. ``` curl -H "X-API-KEY: your_api_key" "https://scrappa.co/api/search-light?query=test" ``` ## Base URL `https://scrappa.co/api/` ## Pricing - 1 credit = 1 API request (all endpoints cost 1 credit) - Free tier: 500 credits/month, no credit card required - Paid plans: from $10/33,000 credits to $1,000/5,000,000 credits - Up to 50x cheaper than SerpAPI for the same data ## MCP (Model Context Protocol) Integration Scrappa provides an MCP server so AI assistants (Claude, Cursor, etc.) can call APIs directly as tools. Setup guide: https://scrappa.co/docs/mcp-integration Comparison guide: https://scrappa.co/post/best-mcp-servers-web-scraping ## API Endpoints ### Arbeitsagentur Jobs API Access Germany's official Federal Employment Agency job listings. Search millions of German job postings with powerful filters including location, job type, working hours, and employment type. #### Job Detail - **Docs**: https://scrappa.co/docs/arbeitsagentur-jobs-api/arbeitsagentur_jobs_detail - **Summary**: Get the full upstream Arbeitsagentur job detail object by reference number - **Description**: Fetch the detailed Arbeitsagentur job payload for a single listing, including the full description, employer website, and contact details when the upstream source provides them. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `refnr` | string | Yes | Arbeitsagentur reference number for the listing, usually returned from the Job Search endpoint | **Example request:** ``` GET https://scrappa.co/api/arbeitsagentur/job?refnr=12345-abc Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "referenznummer": "12345-abc", "titel": "Software Entwickler (m/w/d)", "stellenbeschreibung": "

Full description

", "arbeitgeberWebseite": "https://example.com", "kontakt": { "name": "Max Mustermann", "telefonnummer": "+49 30 123456", "email": "max@example.com" } } } ``` #### Job Search - **Docs**: https://scrappa.co/docs/arbeitsagentur-jobs-api/arbeitsagentur_jobs_search - **Summary**: Search German job listings from the Federal Employment Agency (Bundesagentur für Arbeit) - **Description**: Search job listings from Germany's Federal Employment Agency with powerful filters. Supports filtering by keyword (was), location (wo), search radius (umkreis), offer type (angebotsart), working hours (arbeitszeit), publication date (veroeffentlichtseit), occupational field (berufsfeld), employer (arbeitgeber), contract type (befristung), temporary work (zeitarbeit), and pagination (page, size). **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `was` | string | No | Job title, keyword, or occupation to search for (e.g. "Software Entwickler") | | `wo` | string | No | Location to search in, e.g. city name or postal code (e.g. "Berlin" or "10115") | | `umkreis` | integer | No | Search radius in kilometers around the specified location (e.g. 25) | | `angebotsart` | integer | No | Type of job offer: 1 = employment, 2 = self-employment, 4 = apprenticeships/dual study, 34 = internship/trainee | | `arbeitszeit` | string | No | Working hours type: vz = full-time, tz = part-time, snw = shift/night/weekend, ho = home office, mj = mini job | | `veroeffentlichtseit` | integer | No | Filter by publication date in days (e.g. 1 = last 24 hours, 7 = last week, 30 = last month) | | `berufsfeld` | string | No | Occupational field code to filter results by profession category | | `arbeitgeber` | string | No | Filter by employer/company name | | `befristung` | integer | No | Contract duration: 1 = fixed-term, 2 = permanent/unlimited | | `zeitarbeit` | boolean | No | Include temporary work positions: 1 (yes) or 0 (no) | | `page` | integer | No | Page number for pagination (starts at 1) | | `size` | integer | No | Number of results per page (1-100) | | `pav` | boolean | No | Include listings from private employment agencies: 1 (yes) or 0 (no) | **Example request:** ``` GET https://scrappa.co/api/arbeitsagentur/jobs?was=Software+Entwickler&wo=Berlin&umkreis=25&page=1&size=10 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "stellenangebote": [ { "refnr": "de:dJobAngebot:10000001", "titel": "Software Entwickler (m/w/d)", "beruf": "Softwareentwickler/-in", "arbeitgeber": "TechGmbH", "arbeitsort": { "ort": "Berlin", "plz": "10115", "region": "Berlin", "land": "Deutschland", "koordinaten": { "lat": 52.52, "lon": 13.405 } }, "eintrittsdatum": "2026-03-01", "aktuelleVeroeffentlichungsdatum": "2026-02-20T08:00:00", "externeUrl": "https://www.arbeitsagentur.de/jobsuche/jobdetail/10000001" } ], "maxErgebnisse": "120", "page": 1, "size": 10, "facetten": [] } } ``` #### Location Search - **Docs**: https://scrappa.co/docs/arbeitsagentur-jobs-api/arbeitsagentur_location_search - **Summary**: Search for German locations by postal code or city name - **Description**: Search for valid German location identifiers used as input for the Job Search endpoint. Look up locations by postal code (plz) or search term (suchwort) to obtain structured location data. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `plz` | string | No | German postal code to look up (e.g. "10115") | | `suchwort` | string | No | City or location name to search for (e.g. "Berlin") | **Example request:** ``` GET https://scrappa.co/api/arbeitsagentur/locations?plz=10115 Header: X-API-KEY: your_api_key ``` ### Booking.com API Hotel data extracted from public Booking.com pages — search results, property details, destination resolution, visible prices, rooms, photos, facilities, and review score fields. #### Booking.com Bulk Prices - **Docs**: https://scrappa.co/docs/booking-api/booking_bulk_prices - **Summary**: Run up to two dated Booking.com price searches in one request - **Description**: Accepts a small batch of Booking.com search parameter objects and returns visible price cards for each search. The default server limit is intentionally small to protect the Booking proxy/WAF path. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `searches` | array | Yes | JSON array of search objects. Each object requires ss, checkin, and checkout. | **Example request:** ``` GET https://scrappa.co/api/booking/bulk-prices Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "data": { "results": [] } } ``` #### Booking.com Destinations - **Docs**: https://scrappa.co/docs/booking-api/booking_destinations - **Summary**: Resolve Booking.com destination ids from a search query - **Description**: Fetches a lightweight Booking.com search page and returns the resolved destination URL, destination id, and destination type when Booking exposes them. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `q` | string | Yes | Destination query, e.g. Paris or New York. | | `lang` | string | No | UI language hint (e.g. en-us, de). | | `currency` | string | No | 3-letter currency code (e.g. EUR, USD). | **Example request:** ``` GET https://scrappa.co/api/booking/destinations?q=Paris&lang=en-us¤cy=EUR Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "data": { "suggestions": [] } } ``` #### Booking.com Facilities - **Docs**: https://scrappa.co/docs/booking-api/booking_facilities - **Summary**: Extract facilities and policies from a Booking.com hotel page - **Description**: Returns visible facility, amenity, and policy text when those sections are rendered in the public hotel page HTML. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | No | Full Booking.com hotel URL (e.g. https://www.booking.com/hotel/fr/ritz-paris.html). Either url OR (country + slug) is required. | | `country` | string | No | 2-letter country code (e.g. fr, us, de). Used together with slug. | | `slug` | string | No | Hotel slug from the Booking.com URL (e.g. ritz-paris). The trailing .html is optional. | **Example request:** ``` GET https://scrappa.co/api/booking/facilities?country=fr&slug=muguet Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "data": { "facilities": [], "policies": [] } } ``` #### Booking.com Hotel - **Docs**: https://scrappa.co/docs/booking-api/booking_hotel - **Summary**: Get hotel details from a Booking.com property page - **Description**: Fetches a Booking.com property page and returns structured data extracted from the page (title, canonical URL, JSON-LD Hotel schema, OpenGraph metadata, aggregate rating). Pass either a full Booking.com hotel URL via "url", or a country + slug pair (e.g. country=fr, slug=ritz-paris). **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | No | Full Booking.com hotel URL (e.g. https://www.booking.com/hotel/fr/ritz-paris.html). Either url OR (country + slug) is required. | | `country` | string | No | 2-letter country code (e.g. fr, us, de). Used together with slug. | | `slug` | string | No | Hotel slug from the Booking.com URL (e.g. ritz-paris). The trailing .html is optional. | **Example request:** ``` GET https://scrappa.co/api/booking/hotel?country=fr&slug=ritz-paris Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "data": { "hotel_schema": null } } ``` #### Booking.com Photos - **Docs**: https://scrappa.co/docs/booking-api/booking_photos - **Summary**: Extract public image URLs from a Booking.com hotel page - **Description**: Returns public image URLs exposed through JSON-LD and social metadata on a Booking.com property page. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | No | Full Booking.com hotel URL (e.g. https://www.booking.com/hotel/fr/ritz-paris.html). Either url OR (country + slug) is required. | | `country` | string | No | 2-letter country code (e.g. fr, us, de). Used together with slug. | | `slug` | string | No | Hotel slug from the Booking.com URL (e.g. ritz-paris). The trailing .html is optional. | **Example request:** ``` GET https://scrappa.co/api/booking/photos?country=fr&slug=muguet Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "data": { "photos": [] } } ``` #### Booking.com Prices - **Docs**: https://scrappa.co/docs/booking-api/booking_prices - **Summary**: Extract visible price cards from Booking.com search results - **Description**: Returns visible price text from dated Booking.com search result cards. This is a public-page signal, not guaranteed inventory. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `ss` | string | Yes | Destination, e.g. "Paris" or "New York". | | `checkin` | string | Yes | Check-in date (YYYY-MM-DD). Required for price cards to render. | | `checkout` | string | Yes | Check-out date (YYYY-MM-DD). Required for price cards to render. | | `group_adults` | integer | No | Number of adults (1-30). Defaults to Booking.com default. | | `group_children` | integer | No | Number of children (0-20). | | `no_rooms` | integer | No | Number of rooms (1-30). | | `dest_id` | integer | No | Booking.com destination id when known (e.g. -1456928 for Paris). Helps Booking render resolved city result pages. | | `dest_type` | string | No | Booking.com destination type when known: city, region, district, hotel, landmark, or airport. | | `lang` | string | No | UI language hint (e.g. en-us, de). | | `currency` | string | No | 3-letter currency code (e.g. EUR, USD). | **Example request:** ``` GET https://scrappa.co/api/booking/prices?ss=Paris&checkin=2026-06-01&checkout=2026-06-04&group_adults=2&dest_id=-1456928&dest_type=city Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "data": { "prices": [] } } ``` #### Booking.com Review Scores - **Docs**: https://scrappa.co/docs/booking-api/booking_review_scores - **Summary**: Extract aggregate review score fields from a Booking.com hotel page - **Description**: Returns the public aggregate rating fields exposed on a Booking.com property page. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | No | Full Booking.com hotel URL (e.g. https://www.booking.com/hotel/fr/ritz-paris.html). Either url OR (country + slug) is required. | | `country` | string | No | 2-letter country code (e.g. fr, us, de). Used together with slug. | | `slug` | string | No | Hotel slug from the Booking.com URL (e.g. ritz-paris). The trailing .html is optional. | **Example request:** ``` GET https://scrappa.co/api/booking/review-scores?country=fr&slug=muguet Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "data": { "aggregate_rating": null } } ``` #### Booking.com Rooms - **Docs**: https://scrappa.co/docs/booking-api/booking_rooms - **Summary**: Extract visible room cards from a Booking.com hotel page - **Description**: Returns visible room names, prices, occupancy, and bed text when Booking renders room availability for the supplied dates. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | No | Full Booking.com hotel URL (e.g. https://www.booking.com/hotel/fr/ritz-paris.html). Either url OR (country + slug) is required. | | `country` | string | No | 2-letter country code (e.g. fr, us, de). Used together with slug. | | `slug` | string | No | Hotel slug from the Booking.com URL (e.g. ritz-paris). The trailing .html is optional. | | `checkin` | string | No | Check-in date (YYYY-MM-DD). | | `checkout` | string | No | Check-out date (YYYY-MM-DD). | | `group_adults` | integer | No | Number of adults (1-30). | | `group_children` | integer | No | Number of children (0-20). | | `no_rooms` | integer | No | Number of rooms (1-30). | | `lang` | string | No | UI language hint (e.g. en-us, de). | | `currency` | string | No | 3-letter currency code (e.g. EUR, USD). | **Example request:** ``` GET https://scrappa.co/api/booking/rooms?country=fr&slug=muguet&checkin=2026-07-04&checkout=2026-07-06&group_adults=2 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "data": { "rooms": [] } } ``` #### Booking.com Search - **Docs**: https://scrappa.co/docs/booking-api/booking_search - **Summary**: Search hotels on Booking.com - **Description**: Fetches a Booking.com search results page and returns structured property cards (name, URL, image, review score, location, price). For best results pass checkin + checkout dates: bare location-only queries on Booking.com redirect to the empty form page. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `ss` | string | Yes | Destination, e.g. "Paris" or "New York". | | `checkin` | string | No | Check-in date (YYYY-MM-DD). Required for property cards to render. | | `checkout` | string | No | Check-out date (YYYY-MM-DD). Required for property cards to render. | | `group_adults` | integer | No | Number of adults (1-30). Defaults to Booking.com default. | | `group_children` | integer | No | Number of children (0-20). | | `no_rooms` | integer | No | Number of rooms (1-30). | | `dest_id` | integer | No | Booking.com destination id when known (e.g. -1456928 for Paris). Helps Booking render resolved city result pages. | | `dest_type` | string | No | Booking.com destination type when known: city, region, district, hotel, landmark, or airport. | | `lang` | string | No | UI language hint (e.g. en-us, de). | | `currency` | string | No | 3-letter currency code (e.g. EUR, USD). | **Example request:** ``` GET https://scrappa.co/api/booking/search?ss=Paris&checkin=2026-06-01&checkout=2026-06-04&group_adults=2&dest_id=-1456928&dest_type=city Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "data": { "results": [] } } ``` #### Booking.com Search by URL - **Docs**: https://scrappa.co/docs/booking-api/booking_search_by_url - **Summary**: Parse a copied Booking.com search URL - **Description**: Accepts a Booking.com search, city, region, district, landmark, or airport URL and returns the same structured result-card payload as the search endpoint. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | Yes | Full Booking.com search or destination URL. | **Example request:** ``` GET https://scrappa.co/api/booking/search-by-url?url=https%3A%2F%2Fwww.booking.com%2Fsearchresults.html%3Fss%3DParis Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "data": { "results": [] } } ``` ### Domain Availability API Check whether domains are registered using RDAP #### Domain Availability - **Docs**: https://scrappa.co/docs/domain-availability-api/domain_availability - **Summary**: Check whether a domain is registered or probably available - **Description**: Check a domain against the authoritative RDAP server listed in the IANA bootstrap registry. RDAP can identify registered domains and can indicate that a domain is probably available when the registry returns not found. Registrar checkout availability, premium pricing, aftermarket inventory, reserved names, and registration restrictions require registrar or registry availability data. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `domain` | string | Yes | The fully qualified domain name to check. Example: `example.com` | **Example request:** ``` GET https://scrappa.co/api/domains/availability?domain=example.com Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "domain": "example.com", "available": false, "registered": true, "status": "registered", "confidence": "high", "source": "rdap", "rdap_url": "https://rdap.verisign.com/com/v1/domain/example.com", "rdap_status_code": 200, "rdap_events": [], "nameservers": [] } ``` ### Google Finance API Search stocks, ETFs, and cryptocurrencies, get real-time quotes, and historical data from Google Finance. #### Get Complete Stock Quote - **Docs**: https://scrappa.co/docs/google-finance-api/google_finance_quote - **Summary**: Get all stock data in one request - **Description**: Use the Google Finance quote API when you need a single ticker-level response for a stock, ETF, or other Google Finance instrument. The endpoint returns current price fields, market status, previous close, day range, year range, market cap, P/E ratio, dividend yield, company profile details, financial statement rows, related news, and discovery tickers as structured JSON. This page is built for developers comparing stock quote APIs, finance quote JSON endpoints, and Google Finance data extraction workflows. Start with [Search Financial Instruments](/docs/google-finance-api/google_finance_search) when you only know a company name, then call this quote endpoint with the resolved symbol and exchange. Pair quote data with [Historical Data](/docs/google-finance-api/google_finance_historical) for backtests, [Intraday Graph Data](/docs/google-finance-api/google_finance_intraday) for charting, and [Markets Overview](/docs/google-finance-api/google_finance_markets) for broader market context. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `symbol` | string | Yes | Stock symbol (e.g., AAPL) | | `exchange` | string | No | Exchange code (e.g., NASDAQ). If not provided, the API will attempt to auto-resolve via an internal search. This adds latency and may fail for less common symbols. | | `period_type` | string | No | Filter financials by period: quarterly or annual (default: returns visible data, typically quarterly) | | `hl` | string | No | Language code (default: en) | | `gl` | string | No | Country code (default: us) | **Example request:** ``` GET https://scrappa.co/api/google-finance/quote?symbol=AAPL&exchange=NASDAQ Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "quote": { "summary": { "name": "Apple Inc", "symbol": "AAPL", "exchange": "NASDAQ", "current_price": "255.78", "price_change": "-5.95", "percent_change": "-2.27%", "currency": "USD", "market": { "trading": "Closed", "price": "255.30", "extracted_price": 255.3, "price_movement": { "percentage": 0.19, "movement": "Up" } }, "extensions": [ "Closed: Feb 13, 8:00:00 PM UTC-5", "USD", "NASDAQ" ] }, "key_stats": { "previous_close": "$261.73", "day_range": "$255.45 - $262.23", "year_range": "$169.21 - $288.61", "market_cap": "3.76T USD", "avg_volume": "53.72M", "pe_ratio": "32.36", "dividend_yield": "0.41%", "primary_exchange": "NASDAQ", "climate_change": { "score": "A", "link": "https://cdp.net/..." }, "stats": [], "tags": [] }, "about": { "description": "Apple Inc. is an American multinational technology company...", "ceo": "Tim Cook", "founded": "Apr 1, 1976", "headquarters": "Cupertino, California", "employees": "166,000", "website": null, "info": [] }, "financials": [ { "title": "Income Statement", "results": [ { "date": "Dec 2025", "period_type": "Quarterly", "table": [ { "title": "Revenue", "description": "The total amount...", "value": "143.76B", "change": "15.65%" }, { "title": "Net income", "description": "Company earnings...", "value": "42.10B", "change": "15.87%" } ] } ] } ], "news": [ { "title": "Here's Why Apple (AAPL) is a Great Momentum Stock to Buy", "link": "https://www.nasdaq.com/...", "source": "Nasdaq", "date": "1 day ago", "iso_date": "2025-02-13T12:00:00+00:00", "thumbnail": "https://..." } ], "discover_more": [ { "title": "You may be interested in", "items": [ { "stock": "AMZN:NASDAQ", "name": "Amazon.com Inc", "price": "$198.79", "extracted_price": 198.79, "currency": "USD", "price_movement": { "percentage": 0.41, "movement": "Up" } } ] } ] } } ``` #### Get Historical Data - **Docs**: https://scrappa.co/docs/google-finance-api/google_finance_historical - **Summary**: Get historical price data - **Description**: Get historical price and volume data for a financial instrument. Supports various time ranges from 1 day to maximum available, or custom date ranges with configurable intervals. Pair this with the [Google Finance quote API](/docs/google-finance-api/google_finance_quote) when you need current price, company details, key statistics, financials, and news for the same ticker. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `symbol` | string | Yes | Stock symbol (e.g., AAPL) | | `exchange` | string | No | Exchange code (e.g., NASDAQ) | | `range` | integer | No | Time range: 1=1d, 2=5d, 3=1m, 4=6m, 5=YTD, 6=1y, 7=5y, 8=max (default: 6) | | `start_date` | string | No | Start date for custom range (YYYY-MM-DD) | | `end_date` | string | No | End date for custom range (YYYY-MM-DD) | | `interval` | string | No | Data interval: daily, weekly, monthly (default: daily) | | `hl` | string | No | Language code (default: en) | | `gl` | string | No | Country code (default: us) | **Example request:** ``` GET https://scrappa.co/api/google-finance/historical?symbol=AAPL&exchange=NASDAQ&range=6 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "symbol": "AAPL", "exchange": "NASDAQ", "currency": "USD", "previous_close": 275.5, "prices": [ { "date": 1739480400, "close": 241.53, "change": 0, "percent_change": 0, "volume": 53614054 } ] } ``` #### Get Intraday Graph Data - **Docs**: https://scrappa.co/docs/google-finance-api/google_finance_intraday - **Summary**: Get minute-by-minute price data - **Description**: Get intraday minute-by-minute price and volume data for a stock from Google Finance. Returns data points with price, volume, and formatted timestamps. Use the [Google Finance quote API](/docs/google-finance-api/google_finance_quote) alongside intraday charts when you also need quote summary fields, key statistics, company information, financials, and news. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `symbol` | string | Yes | Stock symbol (e.g., AAPL) | | `exchange` | string | No | Exchange code (e.g., NASDAQ) | | `hl` | string | No | Language code (default: en) | | `gl` | string | No | Country code (default: us) | **Example request:** ``` GET https://scrappa.co/api/google-finance/intraday?symbol=AAPL&exchange=NASDAQ Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "symbol": "AAPL", "exchange": "NASDAQ", "currency": "USD", "graph": [ { "price": 275.41, "currency": "USD", "date": "Feb 12 2026, 09:30 AM UTC-05:00", "volume": 616590 }, { "price": 274.3, "currency": "USD", "date": "Feb 12 2026, 09:31 AM UTC-05:00", "volume": 265661 } ] } ``` #### Get Market Indices - **Docs**: https://scrappa.co/docs/google-finance-api/google_finance_indices - **Summary**: Get major market indices data - **Description**: Get real-time data for major market indices including S&P 500, Dow Jones, NASDAQ, and Russell 2000. For individual stock detail after checking market benchmarks, use the [Google Finance quote API](/docs/google-finance-api/google_finance_quote). **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `indices` | string | No | Comma-separated list of index symbols (default: S&P 500, Dow Jones, NASDAQ, Russell 2000) | | `hl` | string | No | Language code (default: en) | | `gl` | string | No | Country code (default: us) | **Example request:** ``` GET https://scrappa.co/api/google-finance/indices?indices=INDEXSP%3A.INX%2CINDEXDJX%3A.DJI Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "indices": [ { "symbol": ".INX", "name": "S&P 500", "exchange": "INDEXSP", "full_symbol": ".INX:INDEXSP", "currency": "USD", "current_price": 6051.97, "price_change": -16.53, "percent_change": -0.27, "previous_close": 6068.5, "price_movement": { "direction": "Down", "value": -16.53, "percentage": -0.27 } } ] } ``` #### Get Markets Overview - **Docs**: https://scrappa.co/docs/google-finance-api/google_finance_markets - **Summary**: Get global markets overview with optional trend filtering - **Description**: Get a comprehensive overview of global financial markets from Google Finance. Without the trend parameter, returns a summary of US, European, and Asian market indices, currencies, cryptocurrencies, and futures. With the trend parameter, returns detailed market trend data (gainers, losers, most active, indexes, climate leaders, cryptocurrencies, currencies) including market_trends and news_results. When a market mover needs deeper ticker-level data, open the [Google Finance quote API](/docs/google-finance-api/google_finance_quote). **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `hl` | string | No | Language code (default: en) | | `gl` | string | No | Country code (default: us) | | `trend` | string | No | Market trend filter. One of: indexes, most-active, gainers, losers, climate-leaders, cryptocurrencies, currencies | | `index_market` | string | No | Regional filter for indexes trend. One of: americas, europe-middle-east-africa, asia-pacific. Only used when trend=indexes. | **Example request:** ``` GET https://scrappa.co/api/google-finance/markets?hl=en Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "markets": { "us": [ { "stock": ".DJI:INDEXDJX", "name": "Dow Jones Industrial Average", "symbol": ".DJI", "exchange": "INDEXDJX", "price": 42515.09, "price_movement": { "direction": "Down", "value": -125.69, "percentage": -0.3 } } ], "europe": [ { "stock": "DAX:INDEXDB", "name": "DAX PERFORMANCE-INDEX", "symbol": "DAX", "exchange": "INDEXDB", "price": 22539.98, "price_movement": { "direction": "Up", "value": 74.25, "percentage": 0.33 } } ], "asia": [ { "stock": "NI225:INDEXNIKKEI", "name": "Nikkei 225", "symbol": "NI225", "exchange": "INDEXNIKKEI", "price": 38776.94, "price_movement": { "direction": "Down", "value": -312.04, "percentage": -0.8 } } ], "currencies": [ { "stock": "EUR-USD", "name": "EUR / USD", "price": 1.0457, "from_currency": "EUR", "to_currency": "USD", "price_movement": { "direction": "Up", "value": 0.0012, "percentage": 0.11 } } ], "crypto": [ { "stock": "BTC-USD", "name": "Bitcoin", "price": 96159.8, "from_currency": "BTC", "to_currency": "USD", "price_movement": { "direction": "Down", "value": -1500.2, "percentage": -1.54 } } ], "futures": [ { "stock": "YMW00:CBOT", "name": "Dow Futures", "symbol": "YMW00", "exchange": "CBOT", "price": 42622, "currency": "USD", "price_movement": { "direction": "Up", "value": 47, "percentage": 0.11 } } ], "top_news": null } } ``` #### Search Financial Instruments - **Docs**: https://scrappa.co/docs/google-finance-api/google_finance_search - **Summary**: Search for stocks, ETFs, and crypto - **Description**: Search for financial instruments by name, symbol, or keyword. Returns matching stocks, ETFs, cryptocurrencies, and other tradable assets. After resolving the symbol and exchange, use the [Google Finance quote API](/docs/google-finance-api/google_finance_quote) to fetch the complete stock profile, key stats, financials, and news. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `q` | string | Yes | Search query (stock symbol, company name, or crypto) | | `hl` | string | No | Language code (default: en) | | `gl` | string | No | Country code (default: us) | **Example request:** ``` GET https://scrappa.co/api/google-finance/search?q=AAPL&hl=en&gl=us Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "results": [ { "symbol": "AAPL", "exchange": "NASDAQ", "name": "Apple Inc", "type": 0, "currency": "USD", "current_price": 261.73, "price_change": -13.77, "percent_change": -5, "previous_close": 275.5, "country": "US" } ] } ``` ### Google Flights API Search and compare flights from Google Flights. Get real-time prices, airline options, baggage fees, and booking links. #### Airlines List - **Docs**: https://scrappa.co/docs/google-flights-api/google_flights_airlines - **Summary**: Get list of supported airlines - **Description**: Returns a list of supported airlines with their IATA codes and names. Free endpoint. **Example request:** ``` GET https://scrappa.co/api/flights/airlines Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "airlines": [ { "code": "AA", "name": "American Airlines" } ] } ``` #### Airports List - **Docs**: https://scrappa.co/docs/google-flights-api/google_flights_airports - **Summary**: Get list of major airports - **Description**: Returns a list of major airports with IATA codes, names, and locations. Free endpoint. **Example request:** ``` GET https://scrappa.co/api/flights/airports Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "airports": [ { "code": "JFK", "name": "John F. Kennedy International Airport", "city": "New York", "country": "United States" } ] } ``` #### Booking Details - **Docs**: https://scrappa.co/docs/google-flights-api/google_flights_booking_details - **Summary**: Get booking details with price insights - **Description**: Get detailed booking information for a specific flight including price insights, price history, fare options, and baggage information. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `booking_token` | string | Yes | The booking token from search results | | `origin` | string | Yes | Origin airport IATA code | | `destination` | string | Yes | Destination airport IATA code | | `departure_date` | string | Yes | Departure date in Y-m-d format | | `airline` | string | Yes | Airline IATA code | | `flight_number` | string | Yes | Flight number | | `adults` | integer | No | Number of adult passengers (1-9, default: 1) | | `children` | integer | No | Number of child passengers (0-9, default: 0) | | `infants_in_seat` | integer | No | Number of infants in seat (0-9, default: 0) | | `infants_on_lap` | integer | No | Number of infants on lap (0-9, default: 0) | | `cabin_class` | string | No | Cabin class: economy, premium_economy, business, or first (default: economy) | | `hl` | string | No | Language code (e.g., en, de, en-US) | | `gl` | string | No | Country/region code (e.g., us, de, gb) | **Example request:** ``` GET https://scrappa.co/api/flights/booking-details?booking_token=abc123&origin=JFK&destination=LAX&departure_date=2026-09-15&airline=AA&flight_number=123 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "flight_details": [], "price_insights": [], "fare_options": [], "baggage_info": [] } ``` #### Date Range Search - **Docs**: https://scrappa.co/docs/google-flights-api/google_flights_date_range - **Summary**: Find cheapest flight dates - **Description**: Search across a date range to find the cheapest flight dates. Returns price data for each date combination. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `origin` | string | Yes | Origin airport IATA code | | `destination` | string | Yes | Destination airport IATA code | | `from_date` | string | Yes | Start of date range in Y-m-d format | | `to_date` | string | Yes | End of date range in Y-m-d format | | `trip_duration` | integer | No | Duration of trip in days (1-30, default: 7) | | `adults` | integer | No | Number of adult passengers (1-9, default: 1) | | `children` | integer | No | Number of child passengers (0-9, default: 0) | | `infants_in_seat` | integer | No | Number of infants in seat (0-9, default: 0) | | `infants_on_lap` | integer | No | Number of infants on lap (0-9, default: 0) | | `cabin_class` | string | No | Cabin class: economy, premium_economy, business, or first (default: economy) | | `exclude_basic` | boolean | No | Exclude basic economy fares when searching in economy class (default: false) | | `max_stops` | string | No | Maximum stops: any, nonstop, one_or_fewer, or two_or_fewer (default: any) | | `hl` | string | No | Language code (e.g., en, de, en-US) | | `gl` | string | No | Country/region code (e.g., us, de, gb) | | `currency` | string | No | Currency code for prices (e.g., USD, EUR, GBP) | **Example request:** ``` GET https://scrappa.co/api/flights/date-range?origin=JFK&destination=LAX&from_date=2026-09-01&to_date=2026-09-30 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "date_price_combinations": [], "search_metadata": [] } ``` #### One-Way Flight Search - **Docs**: https://scrappa.co/docs/google-flights-api/google_flights_one_way - **Summary**: Search for one-way flights - **Description**: Search for one-way flights between airports. Returns flight options with prices, durations, airlines, and layover information. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `origin` | string | Yes | Origin airport IATA code (e.g., JFK, LAX, ORD) | | `destination` | string | Yes | Destination airport IATA code (e.g., LHR, CDG, SFO) | | `departure_date` | string | Yes | Departure date in Y-m-d format (e.g., 2026-09-15) | | `adults` | integer | No | Number of adult passengers (1-9, default: 1) | | `children` | integer | No | Number of child passengers (0-9, default: 0) | | `infants_in_seat` | integer | No | Number of infants in seat (0-9, default: 0) | | `infants_on_lap` | integer | No | Number of infants on lap (0-9, default: 0) | | `cabin_class` | string | No | Cabin class: economy, premium_economy, business, or first | | `exclude_basic` | boolean | No | Exclude basic economy fares when searching in economy class (default: false) | | `max_stops` | string | No | Maximum stops: any, nonstop, one_or_fewer, or two_or_fewer | | `sort_by` | string | No | Sort by: top_flights, cheapest, departure_time, arrival_time, or duration | | `hl` | string | No | Language code (e.g., en, de, en-US) | | `gl` | string | No | Country/region code (e.g., us, de, gb) | | `airlines` | array | No | Filter by airline IATA codes (e.g., ["AA", "UA", "DL"] or "AA,UA,DL") | | `include_baggage` | boolean | No | Include baggage fee information for the cheapest flight (1 = yes, 0 = no, default: 0) | | `departure_time_min` | integer | No | Minimum departure hour (0-23). Use with departure_time_max to filter by time range. | | `departure_time_max` | integer | No | Maximum departure hour (0-23). Use with departure_time_min to filter by time range. | | `arrival_time_min` | integer | No | Minimum arrival hour (0-23). Use with arrival_time_max to filter by time range. | | `arrival_time_max` | integer | No | Maximum arrival hour (0-23). Use with arrival_time_min to filter by time range. | | `max_duration_minutes` | integer | No | Maximum flight duration in minutes. Filters out flights longer than this. | | `max_price` | integer | No | Maximum price in the search currency. Filters out flights more expensive than this. | **Example request:** ``` GET https://scrappa.co/api/flights/one-way?origin=JFK&destination=LAX&departure_date=2026-09-15 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "flights": [], "search_metadata": [] } ``` #### Round-Trip Flight Search - **Docs**: https://scrappa.co/docs/google-flights-api/google_flights_round_trip - **Summary**: Search for round-trip flights - **Description**: Search for round-trip flights. Includes outbound and return flight options with combined pricing. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `origin` | string | Yes | Origin airport IATA code | | `destination` | string | Yes | Destination airport IATA code | | `departure_date` | string | Yes | Departure date in Y-m-d format | | `return_date` | string | Yes | Return date in Y-m-d format | | `adults` | integer | No | Number of adult passengers (1-9) | | `children` | integer | No | Number of child passengers (0-9) | | `infants_in_seat` | integer | No | Number of infants in seat (0-9) | | `infants_on_lap` | integer | No | Number of infants on lap (0-9) | | `cabin_class` | string | No | Cabin class: economy, premium_economy, business, or first | | `exclude_basic` | boolean | No | Exclude basic economy fares when searching in economy class (default: false) | | `max_stops` | string | No | Maximum stops: any, nonstop, one_or_fewer, two_or_fewer | | `sort_by` | string | No | Sort results by: top_flights, cheapest, departure_time, arrival_time, duration | | `hl` | string | No | Language code (e.g., en, de, en-US) | | `gl` | string | No | Country/region code (e.g., us, de, gb) | | `airlines` | array | No | Filter by airline IATA codes (e.g., ["AA", "UA", "DL"] or "AA,UA,DL") | | `include_baggage` | boolean | No | Include baggage fee information for the cheapest flight (1 = yes, 0 = no, default: 0) | | `departure_time_min` | integer | No | Minimum departure hour (0-23). Use with departure_time_max to filter by time range. | | `departure_time_max` | integer | No | Maximum departure hour (0-23). Use with departure_time_min to filter by time range. | | `arrival_time_min` | integer | No | Minimum arrival hour (0-23). Use with arrival_time_max to filter by time range. | | `arrival_time_max` | integer | No | Maximum arrival hour (0-23). Use with arrival_time_min to filter by time range. | | `max_duration_minutes` | integer | No | Maximum flight duration in minutes. Filters out flights longer than this. | | `max_price` | integer | No | Maximum price in the search currency. Filters out flights more expensive than this. | **Example request:** ``` GET https://scrappa.co/api/flights/round-trip?origin=JFK&destination=LAX&departure_date=2026-09-15&return_date=2026-09-22 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "flights": [], "search_metadata": [] } ``` ### Google Hotels API Search and compare hotel prices from Google Hotels #### Google Hotels Autocomplete - **Docs**: https://scrappa.co/docs/google-hotels-api/google_hotels_autocomplete - **Summary**: Location and hotel name suggestions for search autocomplete - **Description**:

The Google Hotels Autocomplete API provides real-time location and hotel name suggestions as users type, powered by the same suggestion engine behind Google Hotels. Build type-ahead search experiences for travel apps, hotel booking platforms, and destination discovery tools.

What You Get

Common Use Cases

How It Works

Send a partial query (minimum 2 characters) and the API returns ranked suggestions from Google's hotel database. Use the type parameter to filter results:

Response Type Values

Each suggestion includes a type field indicating the suggestion category:

Each suggestion includes a scrappa_google_hotels_link that you can call directly to get full hotel search results for that location or property — no extra parameter mapping needed.

Scrappa vs. Building Your Own

Google does not offer a public Hotels Autocomplete API. Building this yourself requires reverse-engineering Google's internal batchexecute protocol, handling protobuf-encoded payloads, and maintaining parsers as Google changes their internal format. Scrappa handles all of this, returning clean JSON with a simple REST interface.

**Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `q` | string | Yes | Location search query | | `gl` | string | No | 2-letter country code for localization (e.g., us, gb, de, fr) | | `hl` | string | No | 2-letter language code for results (e.g., en, es, fr, de) | | `currency` | string | No | 3-letter currency code used in suggestion links (e.g., USD, EUR, GBP) | | `type` | string | No | Type of suggestions to return: location (cities/locations only), hotel (accommodations only), all (both). Default: hotel | **Example request:** ``` GET https://scrappa.co/api/google-hotels/autocomplete?q=Berlin Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "google_hotels_autocomplete", "q": "Paris", "gl": "us", "hl": "en", "currency": "USD" }, "suggestions": [ { "position": 1, "value": "paris hotel las vegas", "type": "accommodation", "highlighted_words": [ "hotel las vegas" ], "autocomplete_suggestion": "paris hotel las vegas", "scrappa_google_hotels_link": "https://scrappa.co/api/google-hotels/search?q=Las+Vegas%2C+NV&check_in_date=2026-09-27&check_out_date=2026-09-28&adults=2&children=0¤cy=USD&hl=en&gl=us&property_token=ChgIgbj58O-AraJFGgovbS8wMzQ4czYwEAE", "location": "Las Vegas, NV", "thumbnail": "https://lh3.googleusercontent.com/grass/AKc-QJEPi1pQEfr-uPrS56QJayOxIX_eB0VMbaasFAlqvvL0jM_cI_a_D9_lrItRAZpRCCIRP8yh8iZqTQw-WRk7PCoe2Q=w92-h92-n-k-no", "kgmid": "/m/0348s60", "data_cid": "4991312229159558145", "property_token": "ChgIgbj58O-AraJFGgovbS8wMzQ4czYwEAE", "scrappa_link": "https://scrappa.co/api/search?q=paris+hotel+las+vegas&hl=en&gl=us&kgmid=%2Fm%2F0348s60" } ], "response_time_ms": 587 } ``` #### Google Hotels Search - **Docs**: https://scrappa.co/docs/google-hotels-api/google_hotels_search - **Summary**: Search hotels on Google Hotels - **Description**: Search for hotels by location with comprehensive filtering options. Supports price range, star rating, free cancellation, and sorting options. Use the Google Hotels Autocomplete endpoint to get valid location suggestions and property tokens for this endpoint. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `q` | string | Yes | Location query for hotel search (e.g., "Paris, France", "Near Eiffel Tower") | | `check_in_date` | string | Yes | Check-in date in YYYY-MM-DD format (must be today or future date) | | `check_out_date` | string | Yes | Check-out date in YYYY-MM-DD format (must be after check-in date) | | `adults` | integer | No | Number of adult guests (1-10) | | `children` | integer | No | Number of children (0-6) | | `currency` | string | No | 3-letter currency code for prices (e.g., USD, EUR, GBP) | | `gl` | string | No | 2-letter country code for localization (e.g., us, gb, de, fr) | | `hl` | string | No | 2-letter language code for results (e.g., en, es, fr, de) | | `sort_by` | integer | No | Sort order: 3 (price lowest first), 8 (rating highest first), 13 (most reviewed first) | | `min_price` | integer | No | Minimum price per night filter | | `max_price` | integer | No | Maximum price per night filter (must be greater than min_price) | | `hotel_class` | array | No | Filter by hotel star rating IDs (comma-separated): 2, 3, 4, or 5 | | `rating` | integer | No | Minimum guest rating filter: 7 (3.5+), 8 (4.0+), 9 (4.5+) | | `amenities` | array | No | Filter by amenity IDs (SerpAPI list, comma-separated). Example: 35 (Free Wi-Fi), 9 (Free breakfast), 15 (Bar) | | `free_cancellation` | boolean | No | Filter for hotels with free cancellation (true/false) | | `children_ages` | array | No | Comma-separated children ages (1-17 years old). Count must match children. | | `vacation_rentals` | boolean | No | Filter for vacation rental properties only (Airbnb-style properties) instead of hotels | | `eco_certified` | boolean | No | Filter for eco-certified/sustainable hotels only | | `special_offers` | boolean | No | Filter for hotels with special offers/deals | | `property_types` | array | No | Filter by property type IDs (SerpAPI list, comma-separated). Example: 12 (Beach hotels), 1 (Apartments) | | `brands` | array | No | Filter by brand IDs (use brands[].id from response) | | `bedrooms` | integer | No | Minimum number of bedrooms (1-20, vacation rentals only) | | `bathrooms` | integer | No | Minimum number of bathrooms (1-20, vacation rentals only) | | `next_page_token` | string | No | Pagination token from previous response | | `property_token` | string | No | Property token for a specific hotel (from search results) | **Example request:** ``` GET https://scrappa.co/api/google-hotels/search?q=Paris%2C+France&check_in_date=2026-09-15&check_out_date=2026-09-18¤cy=EUR&gl=fr Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "properties": [] } ``` ### Google Images API Search and scrape images from Google #### Google Images - **Docs**: https://scrappa.co/docs/google-images-api/google_images - **Summary**: Search Google Images - **Description**: Search and scrape image results from Google Images with advanced filtering by size, type, color, and aspect ratio. Returns structured data including thumbnail URLs, full-resolution original image URLs, source attribution, and image dimensions for each result. ### Key Features - **Image metadata extraction** — Get titles, source websites, thumbnails, and original high-resolution image URLs in a single request - **Advanced filtering** — Filter results by image size (large, medium, icon), type (photo, clipart, lineart, gif, face), dominant color (14 options), and aspect ratio (tall, square, wide) - **Localization support** — Target results by language (`hl`) and country (`gl`) for region-specific image search - **Pagination** — Retrieve multiple pages of results to access hundreds of images per query - **Time-based filtering** — Use the `tbs` parameter to find images from the past day, week, month, or year - **Safe search** — Enable or disable explicit content filtering for content-appropriate results ### Common Use Cases - **E-commerce product research** — Gather product images and visual competitive intelligence across marketplaces - **Content creation and curation** — Find reference images, stock photos, and visual assets for blogs, presentations, and marketing materials - **Brand monitoring** — Track where brand logos and product images appear across the web - **Visual dataset collection** — Build image datasets for machine learning training, computer vision projects, and AI model development - **SEO and visual search analysis** — Monitor which images rank for specific queries and analyze visual SERP features - **Market trend analysis** — Identify trending visual styles, design patterns, and popular imagery in any niche **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `q` | string | Yes | The search term for Google Images. Supports natural language queries (e.g., "sunset over mountains") and advanced operators. | | `page` | integer | No | Page number for pagination (default: 1). Each page returns approximately 10 image results. | | `hl` | string | No | ISO 639-1 language code for results (e.g., `en`, `de`, `fr`, `es`, `ja`). Controls the language of titles and source text. If omitted, uses Google's default based on location. | | `gl` | string | No | ISO 3166-1 alpha-2 country code for geo-targeting (e.g., `us`, `de`, `uk`, `jp`). Prioritizes images from websites in the specified country. | | `imgsz` | string | No | Filter by image size. Accepted values: `large` (high-resolution images), `medium` (standard web images), `icon` (small thumbnails and icons). | | `imgtype` | string | No | Filter by image type. Accepted values: `photo` (photographs), `clipart` (clip art), `lineart` (line drawings), `gif` (animated GIFs), `face` (images containing faces). | | `imgcolor` | string | No | Filter by dominant color. Accepted values: `color`, `gray`, `trans` (transparent), `red`, `orange`, `yellow`, `green`, `teal`, `blue`, `purple`, `pink`, `white`, `black`, `brown`. | | `imgar` | string | No | Filter by aspect ratio. Accepted values: `tall` (portrait orientation), `square` (1:1 ratio), `wide` (landscape orientation). | | `tbs` | string | No | Advanced time-based filters using Google's `tbs` syntax. Examples: `qdr:d` (past 24 hours), `qdr:w` (past week), `qdr:m` (past month), `qdr:y` (past year). | | `safe` | string | No | Safe search filtering. Accepted values: `active` (filter explicit content), `off` (no filtering). Recommended to set `active` for public-facing applications. | **Example request:** ``` GET https://scrappa.co/api/images?q=coffee Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "data": [ { "position": 1, "thumbnail": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRwFJxoG4xATI9dZKguBAl_LbsmREXYKpdAtg", "source": "Wikipedia", "title": "Coffee - Wikipedia", "link": "https://en.wikipedia.org/wiki/Coffee", "original": "https://upload.wikimedia.org/wikipedia/commons/e/e4/Latte_and_dark_coffee.jpg", "original_width": 3200, "original_height": 2000, "is_product": false }, { "position": 2, "thumbnail": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTwsIC3x_NQ3ANjgHZrqshWkXgMhNRR_jUHxBq", "source": "Americano Lounge", "title": "What is American Style Coffee? - Americano Lounge", "link": "https://www.americanolounge.com/what-is-american-style-coffee/", "original": "https://www.americanolounge.com/wp-content/uploads/2024/08/american-style-coffee.webp", "original_width": 1920, "original_height": 1280, "is_product": false }, { "position": 3, "thumbnail": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSk45hpbY7alvCv5r0UDuDG6G8uEJu6G7pChSa", "source": "Uno Casa", "title": "Types of Coffee: A Fully-Brewed Coffee Guide", "link": "https://unocasa.com/blogs/tips/types-of-coffee", "original": "https://unocasa.com/cdn/shop/articles/types_of_coffee_1024x.jpg", "original_width": 1024, "original_height": 683, "is_product": false } ] } ``` ### Google Jobs API Scrape Google Jobs results into structured JSON #### Google Jobs Search - **Docs**: https://scrappa.co/docs/google-jobs-api/google_jobs - **Summary**: Scrape Google Jobs listings into structured JSON - **Description**: Search and scrape Google Jobs listings with q, hl/gl, Google domain, uds filters, and pagination options when available. For use cases, free testing, and pricing, see the Google Jobs API overview. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `q` | string | Yes | Job search query | **Example request:** ``` GET https://scrappa.co/api/google/jobs?q=software+engineer Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "jobs": [ { "title": "Software Engineer", "company": "Example Corp" } ] } ``` ### Google Maps API Search businesses, get reviews, photos, directions and more from Google Maps. #### Advanced Search - **Docs**: https://scrappa.co/docs/google-maps-api/advanced_search - **Summary**: Search places with filters and pagination - **Description**: Perform detailed searches for locations, places, and geographic data with advanced filtering options including coordinates, zoom level, result limits, and pagination. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | The search term that will be used by the API. | | `zoom` | string | Yes | The level of detail displayed on the map. | | `lat` | string | No | Latitude coordinate for the search center. | | `lon` | string | No | Longitude coordinate for the search center. | | `limit` | string | No | Maximum number of results to return. | | `page` | string | No | Page number for pagination (0-based). Default: 0 | | `fields` | string | No | Comma-separated list of fields to return (e.g., name,rating,review_count). | | `hl` | string | No | Language code for results (en, de, fr, es). Default: en | | `gl` | string | No | Country/region code for geo-filtering (us, de, uk, jp). | | `google_domain` | string | No | Google domain to use for the search (e.g., google.com, google.de). | **Example request:** ``` GET https://scrappa.co/api/maps/advanced-search?query=bakery&zoom=13&fields=name%2Crating Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "items": [ { "city": "Houston", "name": "El Bolillo Bakery", "type": "Bakery", "rating": 4.6, "business_id": "0x8640b88f75b395a3:0x8771a1c312c0bd48" } ] } ``` #### Autocomplete - **Docs**: https://scrappa.co/docs/google-maps-api/autocomplete - **Summary**: Get place suggestions as you type - **Description**: The Google Maps Autocomplete API provides automatic query predictions as users type. Helps users find places, addresses, and points of interest quickly. Accepts both "q" and "query" parameters for consistency with other autocomplete endpoints. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `q` | string | Yes | The partial search term to get autocomplete suggestions for. Accepts both "q" (consistent with Google Hotels) and "query". | | `hl` | string | No | Language code for results. Default: en. Examples: en, de, fr, es. Format: ISO 639-1 two-letter language code. | | `gl` | string | No | Country/region code for geo-filtering results. Examples: us, de, uk, jp. Format: ISO 3166-1 alpha-2 country code. | | `ll` | string | No | Latitude and longitude to bias results toward a specific location. Format: "latitude,longitude" (e.g., 40.7128,-74.0060 for New York City). | | `google_domain` | string | No | Google domain to use for the search. Examples: google.com, google.de, google.com.br, google.co.uk. | **Example request:** ``` GET https://scrappa.co/api/maps/autocomplete?q=bakery Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "google_maps_autocomplete", "q": "bakery", "hl": "en", "gl": null, "google_domain": null }, "suggestions": [ { "type": "place", "place_id": "ChIJo5WzdY-4QIYRSL3AEsOhcYc", "google_id": "0x8640b88f75b395a3:0x8771a1c312c0bd48", "main_text": "Bakery near me", "subtext": "Houston, TX", "main_text_highlights": [ { "offset": 0, "length": 6 } ], "latitude": 29.7604, "longitude": -95.3698, "country": "US" } ], "response_time_ms": 587 } ``` #### Business Details - **Docs**: https://scrappa.co/docs/google-maps-api/google_business_details - **Summary**: Fetch live business details from Google - **Description**: Fetch business details directly from Google Maps including contact info, hours, photos, and reviews summary. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `business_id` | string | Yes | The unique Google Business ID (format: 0x...:0x...). | | `hl` | string | No | Language code for results. Default: en | | `gl` | string | No | Country/region code for geo-filtering. Default: us | **Example request:** ``` GET https://scrappa.co/api/maps/business-details?business_id=0x8640b88f75b395a3%3A0x8771a1c312c0bd48 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "status": "OK", "business_id": "0x8640b88f75b395a3:0x8771a1c312c0bd48", "reviews_removed_due_to_defamation": { "message": "In the last year, two to five reviews were removed due to a defamation complaint under local law.", "title": "Reviews were removed from this place", "help_link": "https://support.google.com/contributionpolicy/answer/16997273", "help_link_text": "Learn more about notices for review removals due to defamation complaints in Germany", "minimum_removed_review_count": 2, "maximum_removed_review_count": 5, "summary": "Two to five reviews removed due to defamation complaints.", "is_active": true, "range_bucket": 2, "language": "en", "count_text": "two to five" }, "data": [ { "business_id": "0x8640b88f75b395a3:0x8771a1c312c0bd48", "name": "Example Business", "reviews_removed_due_to_defamation": { "message": "In the last year, two to five reviews were removed due to a defamation complaint under local law.", "title": "Reviews were removed from this place", "help_link": "https://support.google.com/contributionpolicy/answer/16997273", "help_link_text": "Learn more about notices for review removals due to defamation complaints in Germany", "minimum_removed_review_count": 2, "maximum_removed_review_count": 5, "summary": "Two to five reviews removed due to defamation complaints.", "is_active": true, "range_bucket": 2, "language": "en", "count_text": "two to five" } } ] } ``` #### Business Info - **Docs**: https://scrappa.co/docs/google-maps-api/google_business_info - **Summary**: Get cached business information - **Description**: Retrieve cached business information from the local database. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `business_id` | string | Yes | The unique Google Business ID. | **Example request:** ``` GET https://scrappa.co/api/maps/business?business_id=0x8640b88f75b395a3%3A0x8771a1c312c0bd48 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "name": "Example Business", "business_id": "0x8640b88f75b395a3:0x8771a1c312c0bd48" } ``` #### Directions - **Docs**: https://scrappa.co/docs/google-maps-api/google_maps_directions - **Summary**: Get directions between locations - **Description**: Get directions between two locations with route information including distance, duration, and step-by-step navigation. Supports driving, walking, bicycling, and transit modes. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `origin` | string | Yes | Starting point - address, place name, or coordinates. | | `destination` | string | Yes | Ending point - address, place name, or coordinates. | | `mode` | string | No | Mode: driving, walking, bicycling, or transit. Default: driving | | `hl` | string | No | Language code for results. Default: en | | `gl` | string | No | Country/region code for geo-filtering. | **Example request:** ``` GET https://scrappa.co/api/maps/directions?origin=New+York%2C+NY&destination=Boston%2C+MA Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "directions": [], "status": "OK", "routes_count": 0 } ``` #### Google Reviews API - **Docs**: https://scrappa.co/docs/google-maps-api/google_reviews - **Summary**: Fetch Google Maps place reviews as JSON - **Description**: Google Reviews API documentation for developers who need Google Maps place reviews in structured JSON. Scrappa's `GET /api/maps/reviews` endpoint fetches review text, star ratings, reviewer profile fields, timestamps, photos, language, review form attributes, review links, likes, and owner responses from public Google Maps business listings. ## Google Maps reviews API for business review data Use this endpoint when you already have a Google Maps `business_id` and need reviews for reputation monitoring, local SEO research, review analytics, customer sentiment analysis, lead enrichment, or competitive benchmarking. It is built for Google Maps reviews scraping workflows where the output needs to be normalized JSON instead of browser HTML. ## Google Places API reviews endpoint documentation Use this page as Scrappa's Google Places API reviews endpoint documentation when the official Google Places or Google Business Profile APIs do not return the public Maps review fields your workflow needs. The request path is `GET /api/maps/reviews`, the required identifier is `business_id`, and the response is ready for review monitoring, local business enrichment, and reputation analytics pipelines. ## What the reviews endpoint returns Each review item can include `review_id`, `review_text`, `rating`, `timestamp`, `review_link`, `review_likes`, reviewer identifiers, author profile links, author review counts, Local Guide level, review language, images, owner response text, and owner response timestamps. The response also includes `nextPage` when more reviews are available. ## Filtering, sorting, localization, and pagination Use `search` to filter reviews by keyword, `sort` to request most relevant, newest, highest-rated, or lowest-rated reviews, and `page` or `pages` to paginate through larger review sets. Use `hl` and `gl` when your review monitoring workflow needs localized review text, region-specific behavior, or country-specific Google Maps results. ## How to get the business ID before fetching reviews Start with [Google Maps Simple Search](/docs/google-maps-api/simple_search) when you know a business name, category, or address. Use [Google Maps Business Details](/docs/google-maps-api/google_business_details) when you need the business profile, rating summary, review count, hours, photos, and place identifiers before calling the reviews endpoint. For one known review, use [Single Review](/docs/google-maps-api/google_single_review). **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `business_id` | string | Yes | The assigned business id by Google (e.g. 0x60188b88b7d8f7ab:0x2133080e9923eaac). | | `search` | string | No | Filter reviews by keyword. | | `sort` | string | No | Sorting order: 1 for Most Relevant, 2 for Newest, 3 for Highest Rating, 4 for Lowest Rating. | | `page` | string | No | Pagination token. | | `pages` | integer | No | Number of pages to fetch in a single request (1-50). Each page counts as one API credit. When pages > 1, response includes pages_fetched, pages_requested, and error fields. | | `limit` | string | No | Maximum number of reviews to return per page. | | `hl` | string | No | Language code for results. Default: en | | `gl` | string | No | Country/region code for geo-filtering. Default: us | **Example request:** ``` GET https://scrappa.co/api/maps/reviews?business_id=0x60188b88b7d8f7ab%3A0x2133080e9923eaac Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "items": [ { "review_id": "ChZDSUhNMG9nS0VJQ0FnSUM1bnYzQzJ3EAE", "review_text": [ "Great place with excellent service!" ], "rating": 5, "timestamp": 1704067200, "review_link": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChZDSUhNMG9nS0VJQ0FnSUM1bnYzQzJ3EAE", "review_likes": 12, "author_id": "123456789012345678901", "author_link": "https://www.google.com/maps/contrib/123456789012345678901?hl=en", "author_name": "John Doe", "author_profile_photo": "https://lh3.googleusercontent.com/a-/example_photo.jpg", "author_review_count": 45, "author_reviews_link": "https://www.google.com/maps/contrib/123456789012345678901/reviews", "author_photo_count": 12, "author_local_guide_level": 3, "owner_response_timestamp": null, "owner_response_text": null, "owner_response_language": null, "review_language": [ "en" ], "review_form": [], "images": [] } ], "nextPage": null } ``` #### Photos - **Docs**: https://scrappa.co/docs/google-maps-api/google_maps_photos - **Summary**: Download photos from a Google place - **Description**: Fetch photos for a specific business or place with contributor details and pagination support. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `business_id` | string | Yes | The unique Google Business ID (format: 0x...:0x...). | | `limit` | string | No | Maximum number of photos to return (1-20). | | `page` | string | No | Page token for pagination. | **Example request:** ``` GET https://scrappa.co/api/maps/photos?business_id=0x8640b88f75b395a3%3A0x8771a1c312c0bd48 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "items": [], "nextPage": null } ``` #### Simple Search - **Docs**: https://scrappa.co/docs/google-maps-api/simple_search - **Summary**: Quick search for places by query - **Description**: Streamlined service for basic searches of locations, places, and points of interest on Google Maps. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | The search term that the API will use. | | `limit` | integer | No | Maximum number of results to return (1-200). | | `page` | integer | No | Page number for pagination (0-based). Default: 0 | | `hl` | string | No | Language code for results. Default: en | | `gl` | string | No | Country/region code for geo-filtering results. | | `google_domain` | string | No | Google domain to use for the search (e.g., google.com, google.de). | **Example request:** ``` GET https://scrappa.co/api/maps/simple-search?query=restaurants+in+new+york Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "items": [ { "name": "El Bolillo Bakery", "price_level": "\u20ac", "price_level_text": "Inexpensive", "review_count": 3690, "rating": 4.7, "website": "https://www.elbolillobakery.com", "domain": "elbolillobakery.com", "latitude": 29.7604, "longitude": -95.3698, "business_id": "0x8640b88f75b395a3:0x8771a1c312c0bd48", "subtypes": [ "Bakery", "Cafe", "Coffee shop" ], "district": "Downtown", "full_address": "2421 Canal St, Houston, TX 77003", "timezone": "America/Chicago", "short_description": "Popular local bakery known for fresh bread and pastries", "full_description": "El Bolillo Bakery is a Houston favorite offering fresh baked goods daily.", "owner_id": "123456789012345678901", "owner_name": "El Bolillo Bakery (Owner)", "owner_link": "https://maps.google.com/maps/contrib/123456789012345678901", "order_link": "https://www.elbolillobakery.com/order", "google_mid": "/g/1tgb0z0z", "type": "Bakery", "phone_numbers": [ "+1 713-226-8889" ], "place_id": "ChIJo5WzdY-4QIYRSL3AEsOhcYc", "photos_sample": [ { "photo_id": "AF1QipNx1234567890", "photo_url": "https://lh3.googleusercontent.com/p/AF1QipNx...", "photo_url_large": "https://lh5.googleusercontent.com/p/AF1QipNx...", "video_thumbnail_url": null, "latitude": 29.7604, "longitude": -95.3698, "type": "photo" } ], "opening_hours": [ { "day": "Monday", "hours": [ "6:00 AM\u20138:00 PM" ], "date": null, "special_day": null }, { "day": "Tuesday", "hours": [ "6:00 AM\u20138:00 PM" ], "date": null, "special_day": null } ], "current_status": "Open", "attributes": { "service_options": { "Curbside pickup": true, "Delivery": false, "In-store pickup": true, "In-store shopping": true, "Takeout": true } }, "neighborhood": "East Downtown", "street_address_alt": "2421 Canal St", "street_address_full": "2421 Canal Street", "city": "Houston", "zip_code": "77003", "state": "Texas", "country_code": "US" } ] } ``` #### Single Review - **Docs**: https://scrappa.co/docs/google-maps-api/google_single_review - **Summary**: Get a single review by ID - **Description**: Fetch a specific review by its review ID, including full review text, rating, photos, and owner response. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `review_id` | string | Yes | The Google review ID. | | `business_id` | string | Yes | The Google business ID. | **Example request:** ``` GET https://scrappa.co/api/maps/review?review_id=ChZDSUhNMG9nS0VJQ0FnSUNiczl6WE1REAE&business_id=0x60188b88b7d8f7ab%3A0x2133080e9923eaac Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "review": { "review_id": "ChZDSUhNMG9nS0VJQ0FnSUNiczl6WE1REAE", "review_text": [ "Great place with excellent service!" ], "rating": 5, "timestamp": 1704067200, "review_link": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChZDSUhNMG9nS0VJQ0FnSUNiczl6WE1REAE", "review_likes": 12, "author_id": "123456789012345678901", "author_link": "https://www.google.com/maps/contrib/123456789012345678901?hl=en", "author_name": "John Doe", "author_profile_photo": "https://lh3.googleusercontent.com/a-/example_photo.jpg", "author_review_count": 45, "author_reviews_link": "https://www.google.com/maps/contrib/123456789012345678901/reviews", "author_local_guide_level": 3, "owner_response_timestamp": null, "owner_response_text": null, "owner_response_language": null, "review_language": [ "en" ], "review_form": [], "images": [] }, "business_info": null, "error": null } ``` ### Google News API Search and scrape news articles from Google News #### Google News - **Docs**: https://scrappa.co/docs/google-news-api/google_news - **Summary**: Search Google News articles - **Description**: Search and scrape news articles from Google News. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `q` | string | No | Search term for news (required unless using topic_token, kgmid, publication_token, section_token, or story_token) | | `hl` | string | No | Language code for the search interface (2 characters, e.g., en, de, fr). Default: en | | `gl` | string | No | Country code for geolocation (2 characters, e.g., us, de, uk). Default: us | | `page` | integer | No | Page number for pagination (1-based). Default: 1 | | `start` | integer | No | Starting offset for pagination (0-based). Cannot be used with page parameter. | | `so` | integer | No | Sort order: 0 for relevance, 1 for date. Default: 0 | | `topic_token` | string | No | Token for specific topic browsing (cannot use with q parameter) | | `kgmid` | string | No | Knowledge Graph entity ID (format: /m/... or /g/..., use alone) | | `publication_token` | string | No | Token for specific publication browsing (cannot use with q parameter) | | `section_token` | string | No | Token for specific news section (cannot use with q parameter) | | `story_token` | string | No | Token for specific story cluster (cannot use with q parameter) | **Example request:** ``` GET https://scrappa.co/api/google/news?q=technology Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "news_results": [ { "position": 1, "title": "Example News Article", "link": "https://example.com/news/article", "type": "article", "source": { "name": "Example Source", "title": "Example Source" }, "date": "2 hours ago", "iso_date": "2025-01-15T10:30:00+00:00", "published_at": "2025-01-15 10:30:00 UTC", "thumbnail": "https://news.google.com/api/attachments/example-thumbnail.jpg", "thumbnail_small": "https://news.google.com/api/attachments/example-thumbnail-small.jpg", "snippet": "Article summary text..." } ], "menu_links": [ { "title": "Technology", "link": "https://news.google.com/topics/CAAqJggKIiBDQkFTRWdvSUwyMHZNRFZ4ZERBU0FtVnVHZ0pWVXlnQVAB", "topic_token": "CAAqJggKIiBDQkFTRWdvSUwyMHZNRFZ4ZERBU0FtVnVHZ0pWVXlnQVAB" } ], "related_publications": [], "sub_menu_links": [], "highlight": null, "related_searches": [ { "position": 1, "query": "related search term", "link": "https://news.google.com/search?q=related+search+term" } ] } ``` ### Google Patents API Search and retrieve patent information from Google Patents #### Google Patents Details - **Docs**: https://scrappa.co/docs/google-patents-api/google_patents_details - **Summary**: Get detailed patent information - **Description**: Get detailed information about a specific patent by its ID. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `patent_id` | string | Yes | The patent number or ID. Example: `US9789384B1`, `EP1234567A1` | **Example request:** ``` GET https://scrappa.co/api/google-patents/details?patent_id=US9789384B1 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "patent_id": "patent/US9789384B1/en", "publication_number": "US9789384B1", "title": "Self-balancing board having a suspension interface...", "abstract": "A self-balancing board including...", "inventors": [ "Shane Chen" ], "assignees": { "original": [ "Inventist, Inc." ], "current": [ "Shane Chen" ] }, "dates": { "priority": "2015-11-03", "filing": "2017-07-05", "grant": null, "publication": "2017-10-10" }, "country": "US", "language": null, "application_number": "US15/652,137", "prior_art_keywords": [ "foot deck", "wheel assembly" ], "links": { "patent_page": "https://patents.google.com/patent/US9789384B1", "pdf": "https://patentimages.storage.googleapis.com/..." }, "citations": { "forward_no_family": [], "forward_yes_family": [], "backward_no_family": [], "backward_yes_family": [] } } } ``` #### Google Patents Search - **Docs**: https://scrappa.co/docs/google-patents-api/google_patents_search - **Summary**: Search for patents on Google Patents - **Description**: Search for patents on Google Patents. Supports filtering by date, country, language, patent status, and more. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `q` | string | Yes | The search query string. Example: `machine learning`, `(Coffee) OR (Tea)` | | `page` | integer | No | Page number for pagination. Default: 1 | | `num` | integer | No | Number of results per page. Range: 1-100. Default: 10 | | `sort` | string | No | Sort order for results. Values: `new`, `old`. Default: `new` | | `before` | string | No | Filter patents before this date. Format: filing:YYYYMMDD or publication:YYYYMMDD. Example: `filing:20231231` | | `after` | string | No | Filter patents after this date. Format: filing:YYYYMMDD or publication:YYYYMMDD. Example: `publication:20230101` | | `country` | string | No | Country code filter. Example: `US`, `WO,JP,EP` | | `language` | string | No | Language filter. Example: `ENGLISH`, `GERMAN` | | `status` | string | No | Patent status filter. Values: `GRANT`, `APPLICATION` | | `type` | string | No | Patent type filter. Values: `PATENT`, `DESIGN` | | `inventor` | string | No | Inventor name filter. Example: `John Smith,Jane Doe` | | `assignee` | string | No | Assignee/company name filter. Example: `Tesla Inc,Apple Inc` | **Example request:** ``` GET https://scrappa.co/api/google-patents/search?q=machine+learning Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "total_results": 125048, "total_pages": 100, "current_page": 1, "patents": [ { "patent_id": "patent/US9789384B1/en", "rank": 0, "title": "Self-balancing board having a suspension interface...", "snippet": "A self-balancing board including...", "publication_number": "US9789384B1", "language": "en", "dates": { "priority": "2015-11-03", "filing": "2017-07-05", "grant": "2017-10-10", "publication": "2017-10-10" }, "inventor": "Shane Chen", "assignee": "Inventist, Inc.", "thumbnail": "https://patentimages.storage.googleapis.com/...", "pdf": "https://patentimages.storage.googleapis.com/...", "family_status": [ { "country": "US", "status": "ACTIVE" }, { "country": "EP", "status": "NOT_ACTIVE" } ] } ] } } ``` ### Google Search API Search Google and get structured results #### Google Search - **Docs**: https://scrappa.co/docs/google-search-api/search - **Summary**: Search Google - **Description**: Perform a Google search and get structured results including organic results, related searches, knowledge graphs, and more. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Search query | | `location` | string | No | Location for results (currently ignored by backend) | | `uule` | string | No | Encoded location (deprecated; supported) | | `google_domain` | string | No | Google domain (e.g., google.de) | | `gl` | string | No | Country code (e.g., us, de, fr) | | `cr` | string | No | Restrict results to countries (e.g., countryUS\|countryDE) | | `hl` | string | No | Interface language code | | `lr` | string | No | Restrict results to language (e.g., lang_en) | | `ludocid` | string | No | Google Customer ID for places | | `lsig` | string | No | Knowledge graph map signature | | `kgmid` | string | No | Knowledge graph entity ID (e.g., /g/11b6gq7c8p) | | `si` | string | No | Encrypted cached search parameters | | `ibp` | string | No | Controls rendering layouts and expansions | | `uds` | string | No | Google-provided filter strings | | `tbs` | string | No | Advanced search filters (dates, patents, etc.) | | `as_qdr` | string | No | Simple time range filter (e.g., d, w, m, y) | | `safe` | string | No | Safe search mode (active, off) | | `nfpr` | integer | No | Exclude auto-corrected results (0 or 1) | | `filter` | integer | No | Enable/disable similar/omitted filters (0 or 1) | | `tbm` | string | No | Search type (isch, vid, nws, lcl, shop, pts) | | `start` | integer | No | Result offset for pagination (0-indexed) | | `page` | integer | No | Page number for pagination (0-indexed) | | `amount` | integer | No | Results per page (1-10, may return fewer) | **Example request:** ``` GET https://scrappa.co/api/search?query=best+restaurants+in+Berlin&hl=en&safe=off Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_information": { "query_displayed": "best restaurants in Berlin", "total_results": 428000000, "time_taken_displayed": "0.42 seconds" }, "organic_results": [ { "position": 1, "title": "The 38 Best Restaurants in Berlin", "link": "https://www.example.com/berlin/best-restaurants", "redirect_link": "https://www.google.com/url?q=https://www.example.com/berlin/best-restaurants", "displayed_link": "www.example.com > berlin > best-restaurants", "snippet": "A curated guide to Berlin restaurants, from modern German dining rooms to casual neighborhood favorites.", "source": "example.com", "sitelinks": { "inline": [ { "title": "Fine Dining", "link": "https://www.example.com/berlin/fine-dining" }, { "title": "Neighborhood Guides", "link": "https://www.example.com/berlin/neighborhoods" } ] } }, { "position": 2, "title": "Berlin Restaurant Guide", "link": "https://guide.example.org/berlin-restaurants", "displayed_link": "guide.example.org > berlin-restaurants", "snippet": "Compare highly rated restaurants in Berlin by cuisine, district, price level, and opening hours.", "source": "guide.example.org" } ], "related_searches": [ { "query": "best restaurants berlin mitte", "link": "https://www.google.com/search?q=best+restaurants+berlin+mitte" }, { "query": "berlin restaurants with tasting menu", "link": "https://www.google.com/search?q=berlin+restaurants+with+tasting+menu" } ], "people_also_search_for": [ "Berlin food guide", "restaurants in Kreuzberg", "Michelin restaurants Berlin" ], "related_questions": [ { "question": "What food is Berlin best known for?", "text_blocks": [ { "type": "paragraph", "snippet": "Berlin is known for currywurst, doner kebab, schnitzel, and a large international restaurant scene." } ] } ], "local_results": { "places": [ { "position": 1, "title": "Example Berlin Bistro", "rating": 4.7, "reviews": 1842, "type": "Restaurant", "address": "Mitte, Berlin" } ] }, "knowledge_graph": null, "inline_images": [ { "title": "Berlin restaurant dining room", "thumbnail": "https://images.example.com/berlin-restaurant.jpg", "source": "example.com" } ], "total_results": 428000000, "engine_used": "google", "service_used": "google" } ``` #### Google Search Advanced - **Docs**: https://scrappa.co/docs/google-search-api/google_search_advanced - **Summary**: Browser-backed modern Google SERP extraction - **Description**: Fetch a modern Google SERP through the browser orchestrator and return richer structured modules including organic results, ads, People Also Ask, knowledge panels, local packs, news, videos, images, shopping blocks, answer boxes, related searches, spelling corrections, filters, and pagination when present. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Search query | | `location` | string | No | Location for results (currently ignored by backend) | | `uule` | string | No | Encoded location (deprecated; supported) | | `google_domain` | string | No | Google domain (e.g., google.de) | | `gl` | string | No | Country code (e.g., us, de, fr) | | `cr` | string | No | Restrict results to countries (e.g., countryUS\|countryDE) | | `hl` | string | No | Interface language code | | `lr` | string | No | Restrict results to language (e.g., lang_en) | | `tbs` | string | No | Advanced search filters (dates, patents, etc.) | | `as_qdr` | string | No | Simple time range filter (e.g., d, w, m, y) | | `safe` | string | No | Safe search mode (active, off) | | `nfpr` | integer | No | Exclude auto-corrected results (0 or 1) | | `filter` | integer | No | Enable/disable similar/omitted filters (0 or 1) | | `tbm` | string | No | Search type (isch, vid, nws, lcl, shop, pts) | | `start` | integer | No | Result offset for pagination (0-indexed) | | `page` | integer | No | Page number for pagination (0-indexed) | | `amount` | integer | No | Results per page (1-10, may return fewer) | **Example request:** ``` GET https://scrappa.co/api/search-advanced?query=best+restaurants+in+Berlin&hl=en&gl=de Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_information": { "query_displayed": "best restaurants in Berlin", "total_results": 428000000 }, "organic_results": [ { "position": 1, "title": "The 38 Best Restaurants in Berlin", "link": "https://www.example.com/berlin/best-restaurants", "displayed_link": "www.example.com > berlin > best-restaurants", "snippet": "A curated guide to Berlin restaurants, from modern German dining rooms to casual neighborhood favorites.", "source": "example.com" } ], "people_also_ask": [ { "question": "What food is Berlin best known for?" } ], "knowledge_graph": null, "local_results": { "places": [] }, "top_stories": [], "videos": [], "images": [], "shopping_results": [], "related_searches": [], "pagination": { "next": null }, "service_used": "google" } ``` #### Search (Light) - **Docs**: https://scrappa.co/docs/google-search-api/google_search_light - **Summary**: Lightweight Google web search - **Description**: Lightweight web search endpoint. Returns structured JSON search results. Max 200 results per query (10 pages × 20 results). Supports query modifiers like filetype:pdf, site:reddit.com, or "exact phrase". **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Search query with optional modifiers | | `num` | integer | No | Number of results per page (1-20, default: 10) | | `page` | integer | No | Page number for pagination (1-10, default: 1). Mutually exclusive with "start". Internally converted to a start offset after validation. | | `start` | integer | No | Starting index for offset-based pagination (0-170). Mutually exclusive with "page". | | `hl` | string | No | Interface language code (default: en) | | `safe` | string | No | Safe search: off or active (default: off) | | `lr` | string | No | Restrict results to language (e.g., lang_en) | | `gl` | string | No | Country code for results (e.g., us, de) | | `cr` | string | No | Restrict to country (e.g., countryUS) | | `dateRestrict` | string | No | Date filter (e.g., d7 for last 7 days) | | `sort` | string | No | Sort order (e.g., date) | | `filter` | integer | No | Enable/disable duplicate filtering (0 or 1) | | `rights` | string | No | Filter by usage rights (cc_publicdomain, cc_attribute, cc_sharealike, cc_noncommercial, cc_nonderived) | **Example request:** ``` GET https://scrappa.co/api/search-light?query=artificial+intelligence&num=10 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "organic_results": [ { "position": 1, "title": "Example Search Result", "link": "https://example.com/article", "displayed_link": "example.com/article", "snippet": "This is an example search result snippet that describes the content...", "snippet_highlighted_words": [ "example", "search" ], "thumbnail": "https://example.com/thumbnail.jpg", "rich_snippet": { "image": "https://example.com/image.jpg", "thumbnail": "https://example.com/thumb.jpg" } } ], "people_also_search_for": [ "related query 1", "related query 2", "related query 3" ], "search_information": { "query_displayed": "example search query", "total_results": 1500000, "time_taken": 0.42 }, "pagination": { "current_page": 1, "pages": [ { "page": 1, "start": 0 }, { "page": 2, "start": 10 }, { "page": 3, "start": 20 } ] }, "total_results": 1500000 } ``` #### Search Autocomplete - **Docs**: https://scrappa.co/docs/google-search-api/google_search_autocomplete - **Summary**: Google search suggestions - **Description**: Get search suggestions for a query prefix. Returns up to 10 suggestions based on popular searches. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Search query prefix | | `hl` | string | No | Language code (default: en) | | `limit` | integer | No | Max suggestions (default: 10) | **Example request:** ``` GET https://scrappa.co/api/search-light/autocomplete?query=how+to Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "query": "how to", "suggestions": [] } ``` ### Google Translate API Translate text between 100+ languages #### Google Translate API - **Docs**: https://scrappa.co/docs/google-translate-api/google_translate_api - **Summary**: Translate text between languages - **Description**: Translate text between 100+ languages using Google Translate. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `text` | string | Yes | The text to translate | | `source` | string | Yes | Source language code (e.g., "en", "de") | | `target` | string | Yes | Target language code (e.g., "en", "de") | **Example request:** ``` GET https://scrappa.co/api/google-translate?text=Hello&source=en&target=de Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "translated_text": "Hallo" } ``` ### Google Trends API Search and analyze Google Trends data including interest over time, related queries, and autocomplete suggestions #### Google Trends Autocomplete - **Docs**: https://scrappa.co/docs/google-trends-api/google_trends_autocomplete - **Summary**: Get search suggestions - **Description**: Get autocomplete suggestions for a search query. Useful for discovering trending searches and related keywords. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `q` | string | Yes | The partial search query to get suggestions for | | `geo` | string | No | Geographic location code (e.g., "US", "DE", "Worldwide") | | `hl` | string | No | 2-letter language code for results | **Example request:** ``` GET https://scrappa.co/api/google-trends/autocomplete?q=tesla Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "keyword": "tesla", "geo": "Worldwide", "hl": "en" }, "suggestions": [ { "value": "tesla stock", "type": "suggestion" }, { "value": "tesla model 3", "type": "suggestion" } ], "response_time_ms": 234 } ``` #### Google Trends Interest Over Time - **Docs**: https://scrappa.co/docs/google-trends-api/google_trends_interest - **Summary**: Get interest over time data - **Description**: Retrieve historical interest data for a keyword over a specified time period. Returns a timeline of interest values (0-100) showing search popularity trends. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `q` | string | Yes | The search keyword to analyze (e.g., "tesla", "bitcoin", "covid") | | `geo` | string | No | Geographic location code (e.g., "US", "DE", "GB", "Worldwide") | | `time_range` | string | No | Time period for data: 1h, 4h, 1d, 7d, 30d, 90d, 1y, 5y, all | | `hl` | string | No | 2-letter language code for results (e.g., en, es, fr, de) | | `search_type` | string | No | Type of search: web, images, news, youtube, shopping | **Example request:** ``` GET https://scrappa.co/api/google-trends/interest?q=tesla&geo=US&time_range=1y Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "keyword": "tesla", "geo": "US", "time_range": "today+12-m", "hl": "en", "search_type": "web" }, "timeline_data": [ { "timestamp": 1704067200, "date": "2024-01-01", "value": 45 } ], "interest_over_time": { "average": 52.3, "max_value": 100, "min_value": 12, "data_points": [] }, "response_time_ms": 587 } ``` #### Google Trends Related Queries - **Docs**: https://scrappa.co/docs/google-trends-api/google_trends_related - **Summary**: Get related queries and topics - **Description**: Retrieve queries and topics related to your search term. Shows what else people search for in relation to your keyword. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `q` | string | Yes | The search keyword to analyze | | `geo` | string | No | Geographic location code (e.g., "US", "DE", "Worldwide") | | `time_range` | string | No | Time period for data: 1h, 4h, 1d, 7d, 30d, 90d, 1y, 5y, all | | `hl` | string | No | 2-letter language code for results | | `search_type` | string | No | Type of search: web, images, news, youtube, shopping | **Example request:** ``` GET https://scrappa.co/api/google-trends/related?q=tesla&geo=US Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "keyword": "tesla", "geo": "US", "hl": "en", "search_type": "web" }, "related_queries": [ { "query": "tesla stock", "value": 85, "formatted_value": "85%" } ], "related_topics": [ { "topic": "Tesla, Inc.", "type": "Company", "value": 100, "formatted_value": "100%" } ], "response_time_ms": 623 } ``` ### Google Videos API Search and scrape videos from Google #### Google Videos - **Docs**: https://scrappa.co/docs/google-videos-api/google_videos - **Summary**: Search Google Videos - **Description**: Search and scrape video results from Google. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `q` | string | Yes | Search term for videos | **Example request:** ``` GET https://scrappa.co/api/google/videos?q=tutorial Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_information": { "video_results_state": "Results for exact spelling", "query_displayed": "coffee" }, "video_results": [ { "position": 1, "title": "Coffee Brewing Tutorial", "link": "https://www.youtube.com/watch?v=example", "displayed_link": "www.youtube.com > watch", "thumbnail": "https://i.ytimg.com/vi/example/hqdefault.jpg", "snippet": "Learn how to brew coffee step by step.", "duration": "12:34", "date": "3 days ago", "video_link": "https://www.google.com/url?q=https://www.youtube.com/watch?v=example", "rich_snippet": { "top": { "extensions": [ "YouTube", "Epicurious", "2 weeks ago" ], "detected_extensions": { "weeks_ago": 2 } } }, "key_moments": [ { "time": "00:00", "title": "Intro", "link": "https://www.youtube.com/watch?v=example&t=0s" }, { "time": "02:30", "title": "Equipment Setup", "link": "https://www.youtube.com/watch?v=example&t=150s" } ] } ], "found_in_videos": [ { "position": 1, "title": "Coffee Brewing Guide", "link": "https://www.youtube.com/watch?v=found1", "thumbnail": "https://i.ytimg.com/vi/found1/hqdefault.jpg", "key_moment": { "time": "02:34", "title": "Grinding the beans" }, "channel": "Coffee Channel" } ], "short_videos": [ { "position": 1, "title": "Quick Coffee Tips", "source": "YouTube", "thumbnail": "https://i.ytimg.com/vi/short1/hqdefault.jpg", "clip": "https://www.youtube.com/shorts/short1", "link": "https://www.youtube.com/shorts/short1", "extensions": [ "YouTube", "Barista Pro" ], "profile_name": "Barista Pro" } ], "search_parameters": { "engine": "google_videos", "q": "coffee", "google_domain": "google.com", "hl": "en", "gl": "us", "safe": "off" }, "pagination": { "current": 1 }, "scrappa_pagination": { "current": 1 }, "related_searches": [] } ``` ### Immobilienscout24 API Search German real estate listings on Immobilienscout24. #### Location Autocomplete - **Docs**: https://scrappa.co/docs/immobilienscout24-api/immobilienscout24_locations - **Summary**: Location autocomplete - **Description**: Search for locations (cities, districts, postal codes) and get geocodes that can be used in property search. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Search term (city, district, or postal code) | | `limit` | integer | No | Maximum results to return (default: 10) | **Example request:** ``` GET https://scrappa.co/api/immobilienscout24/locations?query=Berlin Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "locations": [ { "geocode": "1276003001", "name": "Berlin", "type": "city" }, { "geocode": "1276003001013", "name": "Berlin Mitte", "type": "district" } ] } ``` #### Price Insights - **Docs**: https://scrappa.co/docs/immobilienscout24-api/immobilienscout24_price_insights - **Summary**: Average price per m² - **Description**: Get average price per square meter for a location. Returns rental and purchase prices for apartments and houses. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `location` | string | Yes | City name, district name, or geocode (e.g., "Berlin", "Lichtenrade", "1276003001") | **Example request:** ``` GET https://scrappa.co/api/immobilienscout24/price-insights?location=Berlin Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "location": "Berlin", "geocode": "1276003001", "prices": { "apartment_rent_per_m2": 13.11, "apartment_buy_per_m2": 4173.76, "house_rent_per_m2": 16.37, "house_buy_per_m2": 4376.29 }, "currency": "EUR" } ``` #### Property Details - **Docs**: https://scrappa.co/docs/immobilienscout24-api/immobilienscout24_property - **Summary**: Get property details - **Description**: Get detailed information about a specific property listing including price breakdown, features, images, energy class, and agent contact. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | The property ID from Immobilienscout24 (e.g., "164121830") | **Example request:** ``` GET https://scrappa.co/api/immobilienscout24/property/{id}?id=164121830 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "id": "165221493", "title": "Sample listing in Berlin", "description": "Sample property description.", "type": "apartmentrent", "price": { "cold_rent": 2000, "warm_rent": 2440, "deposit": 6000, "currency": "EUR" }, "details": { "rooms": 4, "size_m2": 137, "floor": 3, "available_from": "2026-03-01", "year_built": 2018 }, "address": { "street": "Sample Street 1", "postal_code": "10115", "city": "Berlin", "district": "Mitte", "lat": 52.52, "lon": 13.405 }, "features": [ "Balcony", "Elevator" ], "energy_class": "A+", "images": [ { "url": "https://pictures.immobilienscout24.de/listings/sample.jpg", "caption": "Living room" } ], "agent": { "name": "Sample Agent", "logo_url": "https://pictures.immobilienscout24.de/agents/sample.png" }, "url": "https://www.immobilienscout24.de/expose/165221493", "published_at": null } ``` #### Property Search - **Docs**: https://scrappa.co/docs/immobilienscout24-api/immobilienscout24_search - **Summary**: Search property listings - **Description**: Search for real estate listings on Immobilienscout24 with filters for location, property type, price range, rooms, and size. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `location` | string | Yes | City name, postal code, or geocode (e.g., "Berlin", "10115", "1276003001") | | `type` | string | No | Property type: apartment-rent, apartment-buy, house-rent, house-buy (default: apartment-rent) | | `price_min` | integer | No | Minimum price in EUR | | `price_max` | integer | No | Maximum price in EUR | | `rooms_min` | number | No | Minimum number of rooms | | `rooms_max` | number | No | Maximum number of rooms | | `size_min` | integer | No | Minimum size in m² | | `size_max` | integer | No | Maximum size in m² | | `page` | integer | No | Page number for pagination | | `per_page` | integer | No | Number of results per page (max: 50, default: 20) | **Example request:** ``` GET https://scrappa.co/api/immobilienscout24/search?location=Berlin&type=apartment-rent Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "total_results": 1234, "page": 1, "total_pages": 62, "results": [ { "id": "165221493", "title": "Sample listing in Berlin", "price": 2440, "price_formatted": "2440 EUR", "rooms": 4, "size_m2": 137, "address": "Berlin, Germany", "lat": 52.52, "lon": 13.405, "image_url": "https://pictures.immobilienscout24.de/listings/sample.jpg", "url": "https://www.immobilienscout24.de/expose/165221493", "is_private": false, "published": "10 days ago" } ] } ``` ### Immowelt API Search German real estate listings on Immowelt. #### Immowelt Search API Documentation - **Docs**: https://scrappa.co/docs/immowelt-api/immowelt_search - **Summary**: Immowelt.de property search API - **Description**: Scrappa's `GET /api/immowelt/search` endpoint is the Immowelt Search API documentation page for developers who need Immowelt.de property listings as structured JSON instead of building their own scraper. ## Endpoint reference for Immowelt.de property search Use this endpoint to search apartments and houses for rent or sale across Germany. The request supports `location`, listing `type`, price ranges, room filters, size filters, `page`, and `per_page`, which makes it suitable for search interfaces, market monitoring, lead generation, rental alerting systems, and German real estate data products that need repeatable result feeds. ## What the Immowelt search response returns Each response includes listing IDs, online IDs, listing titles, prices, room counts, square meter values, address text, coordinates, image URLs, listing URLs, publish timestamps, and pagination fields such as `total_results`, `page`, and `total_pages`. That gives you a search-ready listing feed instead of raw HTML that still needs parsing. ## How this differs from an Immowelt scraper build If you are evaluating how to scrape Immowelt.de, this endpoint replaces the brittle search step with one documented API call. Scrappa handles request routing, extraction, and normalization so your application can focus on query logic and downstream analysis rather than browser automation, proxy rotation, or parser upkeep. ## Immowelt search API use cases Use the search endpoint as the first step in workflows that need fresh German property supply data. Rental analytics teams can query Berlin, Munich, Hamburg, Cologne, and Frankfurt with consistent room, size, and price filters to compare availability by city or district. Proptech products can run saved searches for renters and buyers, then trigger alerts when new listings match a budget, room count, or square meter range. Real estate investors can combine paginated search results with listing details to screen neighborhoods, compare yield assumptions, and monitor asking-price changes over time. For cross-portal coverage, query Immowelt search beside ImmobilienScout24 or other real estate APIs and deduplicate by address, coordinates, listing URL, and price. This gives applications a broader view of the German housing market than a single portal search page can provide. ## When to pair this endpoint with the other Immowelt docs Use [Location Autocomplete](/docs/immowelt-api/immowelt_locations) to resolve cities, districts, and postal codes before search. Use [Search Count](/docs/immowelt-api/immowelt_count) when you want to estimate market size before paginating through result sets. Use [Property Details](/docs/immowelt-api/immowelt_property) when a search result needs to be enriched into a single listing record. For broader German real estate coverage, compare the [Immowelt API overview](/apis/immowelt-api) and the [Immobilienscout24 Search API](/docs/immobilienscout24-api/immobilienscout24_search). **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `location` | string | Yes | City name, postal code, or location ID (e.g., "Berlin", "10115", "1") | | `type` | string | No | Property type: apartment-rent, apartment-buy, house-rent, house-buy (default: apartment-rent) | | `price_min` | integer | No | Minimum price in EUR | | `price_max` | integer | No | Maximum price in EUR | | `rooms_min` | number | No | Minimum number of rooms | | `rooms_max` | number | No | Maximum number of rooms | | `size_min` | integer | No | Minimum size in m^2 | | `size_max` | integer | No | Maximum size in m^2 | | `page` | integer | No | Page number for pagination | | `per_page` | integer | No | Number of results per page (max: 50, default: 20) | **Example request:** ``` GET https://scrappa.co/api/immowelt/search?location=Berlin&type=apartment-rent Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "total_results": 1234, "page": 1, "total_pages": 62, "results": [ { "id": "estate_abc123", "online_id": "2kub55g", "title": "Sample listing in Berlin", "price": 2440, "price_formatted": "2.440 EUR", "rooms": 4, "rooms_max": null, "size_m2": 137, "size_m2_max": null, "address": "Berlin, Germany", "lat": 52.52, "lon": 13.405, "image_url": "https://pictures.immowelt.de/sample.jpg", "url": "https://www.immowelt.de/expose/2kub55g", "is_private": false, "published": "2024-01-15T10:00:00Z" } ] } ``` #### Location Autocomplete - **Docs**: https://scrappa.co/docs/immowelt-api/immowelt_locations - **Summary**: Location autocomplete - **Description**: Search for locations and get IDs that can be passed back into /immowelt/search as the `location` parameter. Returns coordinate-based suggestions via geocoding, plus optional placeId enrichment. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Search term (city, district, or postal code) | | `limit` | integer | No | Maximum results to return (default: 10) | **Example request:** ``` GET https://scrappa.co/api/immowelt/locations?query=Berlin Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "locations": [] } ``` #### Places Data - **Docs**: https://scrappa.co/docs/immowelt-api/immowelt_places_data - **Summary**: Place metadata - **Description**: Fetch place metadata (labels, postal codes, coordinates) for one or more placeIds. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `place_ids` | string | Yes | Comma-separated placeIds (e.g. "AD08DE8634") | | `parent_types` | string | No | Optional comma-separated parent type keys (e.g. "AD08,AD06") | **Example request:** ``` GET https://scrappa.co/api/immowelt/places/data?place_ids=AD08DE8634 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "places": [] } ``` #### Places Hierarchy - **Docs**: https://scrappa.co/docs/immowelt-api/immowelt_places_hierarchy - **Summary**: Place parents - **Description**: Fetch parent hierarchy for a placeId. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `place_id` | string | Yes | Immowelt placeId | **Example request:** ``` GET https://scrappa.co/api/immowelt/places/hierarchy?place_id=AD08DE8634 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "hierarchy": [] } ``` #### Property Details - **Docs**: https://scrappa.co/docs/immowelt-api/immowelt_property - **Summary**: Get cached property details - **Description**: Fetch property details from Scrappa cache populated by the last /immowelt/search call. This avoids calling expose/detail endpoints that may be WAF/DataDome-blocked. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Estate id (e.g. "estate_") or onlineId (e.g. "2kub55g") | **Example request:** ``` GET https://scrappa.co/api/immowelt/property?id=estate_f1d8e562-d663-429d-9fdd-33919737d3ea Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "property": { "id": "...", "online_id": "...", "title": "..." }, "raw": [] } ``` #### Search Count - **Docs**: https://scrappa.co/docs/immowelt-api/immowelt_count - **Summary**: Total results count - **Description**: Get total listing count for a placeId + distribution + estateType using Immowelt BFF. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `place_id` | string | Yes | Immowelt placeId (e.g. "AD08DE8634" for Berlin) | | `distribution` | string | No | Rent or Buy (default: Rent) | | `estate_type` | string | No | Apartment or House (default: Apartment) | **Example request:** ``` GET https://scrappa.co/api/immowelt/count?place_id=AD08DE8634&distribution=Rent&estate_type=Apartment Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "total_count": 5132 } ``` ### Indeed Jobs API Search job listings from Indeed #### Indeed Jobs API - **Docs**: https://scrappa.co/docs/indeed-jobs-api/indeed_jobs - **Summary**: Search Indeed job listings by keyword, location, and filters - **Description**: Search Indeed job listings with Scrappa when you need an Indeed API alternative for job search data or a maintained replacement for the deprecated official Indeed Publisher API. Scrappa is not affiliated with or endorsed by Indeed, and this endpoint is not an official Indeed API. It returns structured job listing data as JSON for developer workflows. ## When to use this Indeed jobs API Use this endpoint when you need to search Indeed by keyword, location, country, radius, job type, sort order, and cursor pagination without maintaining a custom Indeed scraper. It is built for job board aggregation, recruiting intelligence, labor market analytics, salary research, and monitoring new postings across cities or countries. Each response includes normalized job listing fields such as title, company, location, salary when available, posting date, apply URL, pagination metadata, and source metadata. That makes it easier to load Indeed results into a database, workflow automation, applicant tracking process, or analytics pipeline. ## How to use Scrappa as an Indeed API alternative The official Indeed Publisher API is deprecated and historically required a publisher relationship. Scrappa provides a direct API-key workflow instead: create a Scrappa account, send a GET request to `/api/indeed/jobs`, and receive JSON responses that can be processed by your application. Use the [authentication docs](/docs/authentication) when adding the `x-api-key` header, or test the endpoint first in the [API playground](/docs/playground). ## What the Indeed jobs response returns The endpoint is designed for applications that need records instead of raw search-result HTML. Use `query` and `location` for the core search, add `country`, `hl`, and `gl` for localized results, then paginate with `cursor` when a workflow needs more listings. Store the normalized company, location, salary, apply URL, and pagination fields directly in your job board, recruiting database, saved-search alert, or labor-market analysis pipeline. For broader job search coverage, compare this page with the [Google Jobs API documentation](/docs/google-jobs-api/google_jobs), which aggregates job listings from many sources, and the [LinkedIn Jobs Search API documentation](/docs/linkedin-api/linkedin_jobs_search), which focuses on public LinkedIn job pages. The [Indeed Jobs API overview](/apis/indeed-jobs-api) explains use cases, pricing, and related job data endpoints. ## Example workflows - Build a job board that searches Indeed listings by role and location. - Track competitor hiring by monitoring company names and target keywords. - Collect salary ranges and location patterns for compensation research. - Enrich recruiting dashboards with fresh job listing data and apply URLs. - Compare Indeed results with Google Jobs and LinkedIn Jobs coverage. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Job search query | | `location` | string | No | Location for job search | | `country` | string | No | 2-letter country code (e.g., US, UK, DE) | | `radius` | integer | No | Search radius (0-100) | | `radius_unit` | string | No | Radius unit (MILES or KILOMETERS) | | `job_type` | string | No | Job type (full_time, part_time, contract, internship, remote) | | `sort` | string | No | Sort order (relevance or date) | | `limit` | integer | No | Results per page (1-100) | | `cursor` | string | No | Pagination cursor from previous response | | `hl` | string | No | Interface language for results. 2-letter language code (e.g., en, de, fr, es). Default: en | | `gl` | string | No | Geolocation/country for localized results. 2-letter country code (e.g., US, DE, GB, FR). Default: US | **Example request:** ``` GET https://scrappa.co/api/indeed/jobs?query=software+engineer&location=Berlin&country=DE&job_type=full_time&limit=20 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "jobs": [ { "id": "a1b2c3d4e5f6", "title": "Senior Software Engineer", "company": { "name": "TechCorp Inc.", "logo": "https://d2q79iu7y748jz.cloudfront.net/s/_squarelogo/128x128/techcorp.png", "website": "https://www.techcorp.com" }, "location": { "city": "San Francisco", "state": "CA", "country": "US", "formatted": "San Francisco, CA", "is_remote": false }, "date_published": "2026-02-01 10:30:00", "apply_url": "https://www.indeed.com/viewjob?jk=a1b2c3d4e5f6" } ], "pagination": { "next_cursor": "eyJwYWdlIjoxfQ==", "has_more": true }, "metadata": { "total_results": 20, "timestamp": "2026-02-03T00:00:00Z" } } } ``` ### Instagram API Scrape Instagram user profiles, posts, and individual post details. Access public Instagram data including images, videos, captions, engagement metrics, and more. #### Instagram Post - **Docs**: https://scrappa.co/docs/instagram-api/instagram_post - **Summary**: Get details of an Instagram post - **Description**: Retrieve detailed information about a specific Instagram post by URL. For best results, use URLs that include the username (e.g., instagram.com/username/p/ABC123/). URLs without username (e.g., instagram.com/p/ABC123/) will attempt automatic username discovery, but this may not always succeed. Returns media URLs, captions, engagement metrics, author info, and tagged users. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | No | Instagram post URL. Recommended format: https://www.instagram.com/username/p/ABC123/ (URLs without username may have limited success) | | `shortcode` | string | No | Instagram post shortcode (e.g., DUBtwxGEqz2). Use when you do not have a full URL. | **Example request:** ``` GET https://scrappa.co/api/instagram/post?url=https%3A%2F%2Fwww.instagram.com%2Finstagram%2Fp%2FDUBtwxGEqz2%2F Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "id": "3819535222330010870", "shortcode": "DUBtwxGEqz2", "media_type": "video", "caption": "Amazing content! #instagram #viral", "hashtags": [ "instagram", "viral" ], "taken_at": "2024-01-15T10:30:00+00:00", "like_count": 125000, "comment_count": 3500, "play_count": 5000000, "media": [ { "type": "video", "thumbnail_url": "https://...", "video_url": "https://...", "video_versions": [] } ], "location": { "id": "123456", "name": "Los Angeles" }, "author": { "id": "25025320", "username": "instagram", "full_name": "Instagram", "profile_pic_url": "https://...", "is_verified": true }, "collaborators": [], "tagged_users": [], "permalink": "https://www.instagram.com/p/DUBtwxGEqz2/" } } ``` #### Instagram Profile API - **Docs**: https://scrappa.co/docs/instagram-api/instagram_user - **Summary**: Get Instagram profile API data - **Description**: Retrieve Instagram profile API data including biography, bio links, follower/following counts, and profile picture. Use the separate /user/posts endpoint to fetch the user's posts. Instagram may reject some platform-owned or restricted profiles upstream, including @instagram, so use a public profile username for test requests. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `username` | string | Yes | Instagram username (without @) | **Example request:** ``` GET https://scrappa.co/api/instagram/user?username=natgeo Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "user": { "id": "787132", "username": "natgeo", "full_name": "National Geographic", "biography": "Experience the world through the eyes of National Geographic photographers.", "bio_links": [ { "title": "", "url": "https://www.nationalgeographic.com", "link_type": "external" } ], "external_url": "https://www.nationalgeographic.com", "profile_pic_url": "https://...", "profile_pic_url_hd": "https://...", "is_verified": true, "is_private": false, "is_business_account": true, "is_professional_account": true, "category_name": "Media/news company", "follower_count": 280000000, "following_count": 160, "media_count": 30000, "pronouns": [] } } ``` #### Instagram User Posts - **Docs**: https://scrappa.co/docs/instagram-api/instagram_user_posts - **Summary**: Get Instagram user posts - **Description**: Retrieve an Instagram user's posts with pagination support. Returns post details including media URLs, captions, engagement metrics, and a pagination cursor for fetching more posts. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `username` | string | Yes | Instagram username (without @) | | `max_id` | string | No | Pagination cursor from previous response (next_max_id) | **Example request:** ``` GET https://scrappa.co/api/instagram/user/posts?username=natgeo Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "posts": [ { "id": "3819535222330010870", "shortcode": "DUBtwxGEqz2", "media_type": "video", "caption": "Post caption text...", "hashtags": [ "nature", "photography" ], "taken_at": "2024-01-15T10:30:00+00:00", "like_count": 125000, "comment_count": 3500, "play_count": 5000000, "media": [ { "type": "video", "thumbnail_url": "https://...", "video_url": "https://..." } ], "location": { "id": "123456", "name": "Los Angeles, California" }, "author": { "username": "natgeo" }, "permalink": "https://www.instagram.com/natgeo/p/DUBtwxGEqz2/" } ], "posts_count": 12, "more_available": true, "next_max_id": "QVFDcF..." } ``` ### Jameda API Search doctors, get reviews, profiles, and autocomplete suggestions from Jameda - Germany's leading medical directory #### Jameda Doctor Details - **Docs**: https://scrappa.co/docs/jameda-api/jameda_doctor_details - **Summary**: Get doctor profile and reviews - **Description**: Get detailed doctor information, reviews, and ratings from Jameda. The doctor_url parameter accepts multiple formats: full URL (https://www.jameda.de/dr-name/specialty/city), path with leading slash (/dr-name/specialty/city), or path without leading slash (dr-name/specialty/city). All formats are normalized internally. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `doctor_url` | string | Yes | Doctor URL path or full URL (e.g., /dr-name/specialty/city or https://www.jameda.de/dr-name/specialty/city) | **Example request:** ``` GET https://scrappa.co/api/jameda/doctor-details?doctor_url=%2Fjosef-luszpinski%2Fzahnarzt%2Fberlin Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": [], "meta": { "url": "https://www.jameda.de/josef-luszpinski/zahnarzt/berlin", "duration_ms": 123.45, "scraped_at": "2026-01-01T00:00:00Z" } } ``` #### Jameda Doctor Reviews - **Docs**: https://scrappa.co/docs/jameda-api/jameda_reviews - **Summary**: Get doctor reviews - **Description**: Get patient reviews and ratings from Jameda. The doctor_url parameter accepts individual doctor profile URLs, plus provider/facility pages under /gesundheitseinrichtungen. Facility URLs with a filters[doctor_id] fragment use the selected doctor review feed; facility URLs without a selected doctor ID return the reviews available on the profile page. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `doctor_url` | string | Yes | Individual doctor URL path or full URL (e.g., /dr-name/specialty/city or https://www.jameda.de/dr-name/specialty/city). Also accepts /gesundheitseinrichtungen facility/provider URLs; include filters[doctor_id] in the fragment when selecting a specific doctor from a facility page. | | `page` | integer | No | Page number (1-500) | | `sort` | string | No | Sort order applied locally to available reviews: newest, oldest, highest, lowest | | `rating` | string | No | Filter by rating (1-5), comma-separated for multiple (e.g., "4,5") | | `per_page` | integer | No | Results per page (1-100) applied locally | **Example request:** ``` GET https://scrappa.co/api/jameda/reviews?doctor_url=%2Fjosef-luszpinski%2Fzahnarzt%2Fberlin Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": [], "meta": { "pagination": { "currentPage": 1, "totalPages": 5, "totalReviews": 50, "resultsPerPage": 10, "hasNextPage": true, "hasPreviousPage": false } } } ``` #### Jameda Location Autocomplete - **Docs**: https://scrappa.co/docs/jameda-api/jameda_autocomplete_location - **Summary**: Get location suggestions - **Description**: Get autocomplete suggestions for locations. Both "q" and "query" parameters are accepted for backward compatibility, but "q" is preferred. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `q` | string | Yes | Location search query (preferred parameter). When building URLs manually, encode special characters (ä=%C3%A4, ö=%C3%B6, ü=%C3%BC). Libraries like URLSearchParams and http_build_query handle this automatically. | **Example request:** ``` GET https://scrappa.co/api/jameda/autocomplete-location?q=M%C3%BCnchen Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "suggests": [] } ``` #### Jameda Search - **Docs**: https://scrappa.co/docs/jameda-api/jameda_search - **Summary**: Search doctors on Jameda - **Description**: Search for doctors on Jameda by specialty or doctor name with optional location. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `q` | string | Yes | Search query (specialty or doctor name). When building URLs manually, encode special characters (ä=%C3%A4, ö=%C3%B6, ü=%C3%BC). Libraries like URLSearchParams and http_build_query handle this automatically. | | `loc` | string | No | City or location (optional). When building URLs manually, encode special characters (ä=%C3%A4, ö=%C3%B6, ü=%C3%BC). Libraries like URLSearchParams and http_build_query handle this automatically. | | `page` | integer | No | Page number (1-500) | | `per_page` | integer | No | Results per page (1-28) | **Example request:** ``` GET https://scrappa.co/api/jameda/search?q=Zahnarzt&loc=Berlin Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": [], "meta": { "page": 1, "duration_ms": 123.45 } } ``` #### Jameda Service Autocomplete - **Docs**: https://scrappa.co/docs/jameda-api/jameda_autocomplete_service - **Summary**: Get service suggestions - **Description**: Get autocomplete suggestions for medical services and specialties. Both "q" and "query" parameters are accepted for backward compatibility, but "q" is preferred. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `q` | string | Yes | Service or specialty search query (max 100 characters, preferred parameter). When building URLs manually, encode special characters (ä=%C3%A4, ö=%C3%B6, ü=%C3%BC). Libraries like URLSearchParams and http_build_query handle this automatically. | **Example request:** ``` GET https://scrappa.co/api/jameda/autocomplete-service?q=Zahnarzt Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "suggests": [ { "header": "Fachbereiche & Symptome", "list": [] } ] }, "meta": { "query": "Zahnarzt", "duration_ms": 123.45, "source": "jameda_elements" } } ``` ### Kleinanzeigen API Search listings on Kleinanzeigen (eBay Kleinanzeigen) #### Kleinanzeigen Details - **Docs**: https://scrappa.co/docs/kleinanzeigen-api/kleinanzeigen_details - **Summary**: Get listing details - **Description**: Get details for a specific Kleinanzeigen listing. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `ad_id` | string | Yes | The unique identifier of the Kleinanzeigen ad | **Example request:** ``` GET https://scrappa.co/api/kleinanzeigen/details?ad_id=2987654321 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "title": "Example Listing", "price": "\u20ac50" } ``` #### Kleinanzeigen Search - **Docs**: https://scrappa.co/docs/kleinanzeigen-api/kleinanzeigen_search - **Summary**: Search Kleinanzeigen listings - **Description**: Search for listings on Kleinanzeigen. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Search query | | `location` | string | No | Location filter (e.g., Berlin) | | `page` | integer | No | Page number for pagination (1-100) | | `category` | string | No | Category filter (e.g., elektronik, auto) | | `price_min` | integer | No | Minimum price filter in EUR | | `price_max` | integer | No | Maximum price filter in EUR | **Example request:** ``` GET https://scrappa.co/api/kleinanzeigen/search?query=iphone&location=Berlin&page=1&category=elektronik&price_min=50&price_max=500 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "listings": [] } ``` #### Kleinanzeigen Shipping Options - **Docs**: https://scrappa.co/docs/kleinanzeigen-api/kleinanzeigen_shipping - **Summary**: Get shipping options - **Description**: Get available shipping options for Kleinanzeigen. **Example request:** ``` GET https://scrappa.co/api/kleinanzeigen/shipping-options Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "options": [] } ``` ### Kununu API Search companies, get reviews, profiles, and company details from Kununu #### Kununu Company Details - **Docs**: https://scrappa.co/docs/kununu-api/kununu_company_details - **Summary**: Get company details - **Description**: Get detailed company information and statistics from Kununu. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | Yes | Country code (de, at, ch) | | `company_slug` | string | Yes | Company slug (e.g., "bmwgroup", "sap-se") | **Example request:** ``` GET https://scrappa.co/api/kununu/company-details?country=de&company_slug=bmwgroup Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "company": [] } ``` #### Kununu Industries - **Docs**: https://scrappa.co/docs/kununu-api/kununu_industries - **Summary**: List available industries - **Description**: Get list of industry categories on Kununu. **Example request:** ``` GET https://scrappa.co/api/kununu/industries Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": [ { "id": 1, "name": "Banken / Finanzdienstleistungen" } ], "meta": { "total": 44, "description": "All available Kununu industry categories with their IDs" } } ``` #### Kununu Job Detail - **Docs**: https://scrappa.co/docs/kununu-api/kununu_job - **Summary**: Get a full Kununu job posting by URL - **Description**: Fetch a public Kununu job posting and return the full description, structured contact information, and page metadata when they are available on the listing. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | Yes | Public Kununu job posting URL | **Example request:** ``` GET https://scrappa.co/api/kununu/job?url=https%3A%2F%2Fwww.kununu.com%2Fjob-postings%2Fde%2Fjob-uuid Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "id": "job-uuid", "title": "Senior Software Engineer", "description_html": "

Full Kununu description

", "contact_person": { "name": "Jane Recruiter", "email": "jane@example.com", "phone": "+49 30 123456" } }, "meta": { "url": "https://www.kununu.com/job-postings/de/job-uuid", "duration_ms": 123.45, "scraped_at": "2026-02-01T00:00:00.000Z", "cached": false, "cached_at": null } } ``` #### Kununu Jobs - **Docs**: https://scrappa.co/docs/kununu-api/kununu_jobs - **Summary**: Search job listings on Kununu - **Description**: Search and filter job listings on Kununu with support for location, workplace model, employment type, career level, industry, discipline, benefits, and more. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | No | Job title or keyword search (e.g., "Software Engineer") | | `location` | string | No | City or location name (e.g., "Berlin"). Pass a plain city name and the API will resolve it automatically. | | `country` | string | No | Country code: de (Germany), at (Austria), ch (Switzerland). Default: de | | `page` | integer | No | Page number for pagination (default: 1, 30 results per page) | | `radius` | integer | No | Search radius in km around location. Values: 10, 20, 30, 50, 100, 200 | | `sort` | string | No | Sort order: "newest" (newest first), "kununuScore" (by company score). Default: relevance | | `workplace[]` | array | No | Filter by workplace model: FULL_REMOTE (home office), PARTLY_REMOTE (hybrid), NON_REMOTE (on-site) | | `employment_types[]` | array | No | Filter by employment type: FULL_TIME, PART_TIME, INTERN, TEMPORARY, CONTRACTOR, SEASONAL, VOLUNTARY | | `career_level[]` | array | No | Filter by career level: 1 (student/intern), 2 (entry-level), 3 (experienced), 4 (manager), 5 (director), 6 (executive), 99 (apprentice) | | `kununu_score[]` | array | No | Filter by minimum company score range: "4-5", "3-4", "2-3", "1-2" | | `industry[]` | array | No | Filter by industry ID (1-44). See Kununu Industries endpoint for full list. | | `discipline[]` | array | No | Filter by discipline/field of activity ID (1001-1022) | | `benefits[]` | array | No | 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 | | `is_top_company` | boolean | No | Only show Top Company badge holders (true/false) | **Example request:** ``` GET https://scrappa.co/api/kununu/jobs?query=Software+Engineer&country=de&workplace%5B%5D=FULL_REMOTE Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "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": [] } } ``` #### Kununu Profiles - **Docs**: https://scrappa.co/docs/kununu-api/kununu_profiles - **Summary**: Get company profiles - **Description**: Get company profiles from Kununu. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `page` | integer | No | Page number for pagination (default: 1) | | `countries` | array | No | Country codes filter (de, at, ch) | | `industry` | integer | No | Industry ID filter (1-44) | **Example request:** ``` GET https://scrappa.co/api/kununu/profiles?page=1 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": [ { "uuid": "company-uuid", "name": "Example Company", "slug": "example-company", "url": "https://www.kununu.com/de/example-company", "logo": "https://example.com/logo.png", "industry": 1, "searchImage": "https://example.com/search-image.jpg", "location": { "city": "Munich", "countryCode": "de" }, "ratings": { "overall": 4.2, "rounded": 4 }, "reviewCount": 150, "totalJobs": 25, "isTopCompany": true, "benefits": [] } ], "meta": { "pagination": { "currentPage": 1, "totalPages": 10, "resultsStart": 0, "resultsEnd": 20, "totalResults": 200 }, "duration_ms": 123.45 } } ``` #### Kununu Reviews - **Docs**: https://scrappa.co/docs/kununu-api/kununu_reviews - **Summary**: Fetch company reviews - **Description**: Get reviews for a specific company on Kununu. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | Yes | Country code (de, at, ch) | | `company_slug` | string | Yes | Company slug (e.g., "bmw-group", "sap-se") | | `company_id` | string | No | Company UUID. Optional; resolved from company_slug when omitted. | | `page` | integer | No | Page number for pagination (default: 1) | | `review_type` | string | No | Type of reviews: "employees" or "candidates" (default: "employees") | | `sort` | string | No | Sort order: "worst", "best", "newest", "oldest" | | `score_filters[]` | array | No | Filter by ratings: "excellent", "good", "satisfactory", "subpar" | | `recommended_filters[]` | array | No | Filter by recommendation: "yes" or "no" | | `jobstatus_filters[]` | array | No | Filter by employment status: "current" or "former" | | `position_filters[]` | array | No | Filter by position: "employee", "manager", "apprentice", "student", "intern", "freelancer", "contractor" | | `department_filters[]` | array | No | Filter by department: "administration", "sales", "legal", "operations", "recruiting", "communication", "product", "logistic", "it", "management", "research", "controlling", "design", "procurement" | | `response_filters[]` | array | No | Filter by employer response: "yes" or "no" | | `date_filters[]` | array | No | Filter by review age: "24months", "12months", "6months", "30days" | | `fetch_factor_scores` | boolean | No | Include detailed factor ratings in response (adds ratings array with items like {"id": "workLifeBalance", "score": 4.5, "roundedScore": 5.0, "text": "Work-life balance"}) | **Example request:** ``` GET https://scrappa.co/api/kununu/reviews?country=de&company_slug=bmwgroup Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": [ { "uuid": "review-uuid", "type": "employer", "typeVersion": "v1_dach", "source": null, "title": "Great team", "score": 4.2, "roundedScore": 4, "createdAt": "2026-01-01T00:00:00.000Z", "updatedAt": "2026-01-02T00:00:00.000Z", "displayStatus": "published", "multipleReview": false, "apprenticeshipJob": false, "position": "employee", "department": "research", "texts": [ { "id": "positive", "text": "Great team environment" }, { "id": "suggestion", "text": "Better coffee" } ], "responses": [ { "id": "response-1", "text": "Thank you for your feedback", "createdAt": "2026-01-03T00:00:00.000Z", "author": "HR Team" } ], "reactions": { "agree": { "count": 5 }, "helpful": { "count": 3 } }, "company": { "uuid": "company-uuid", "name": "Example Company", "slug": "example-company", "location": { "city": "Munich", "state": "Bavaria", "countryCode": "de" } } } ], "meta": { "pagination": { "currentPage": 1, "totalPages": 1, "resultsStart": 0, "resultsEnd": 1, "totalResults": 1 }, "filters": { "score": { "excellent": 123, "good": 456, "satisfactory": 78, "subpar": 12 }, "recommended": { "yes": 789, "no": 101 }, "jobstatus": { "current": 234, "former": 567 }, "position": { "employee": 890, "manager": 123 }, "department": { "it": 456, "sales": 789 }, "response": { "yes": 321, "no": 654 } }, "duration_ms": 123.45, "cached": false } } ``` #### Kununu Search - **Docs**: https://scrappa.co/docs/kununu-api/kununu_search - **Summary**: Search Kununu companies and employer profiles - **Description**: Search Kununu companies by brand name, employer keyword, or industry category and return structured employer profile matches from the DACH region. Use the Kununu Search API to discover company review profiles before fetching deeper employer data such as employee reviews, profile details, ratings, locations, industries, benefits, and open job counts. Filter results by country or industry to build HR tech products, employer reputation dashboards, competitive research workflows, and company-review datasets. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Search query | | `limit` | integer | No | Max results (1-100) | | `offset` | integer | No | Number of results to skip (for pagination) | | `countries[]` | array | No | Country codes filter | | `industry` | integer | No | Industry ID filter (1-44) | **Example request:** ``` GET https://scrappa.co/api/kununu/search?query=BMW Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": [ { "id": "company-uuid", "uuid": "company-uuid", "name": "Example Company", "slug": "example-company", "url": "https://www.kununu.com/de/example-company", "logo": "https://example.com/logo.png", "industry": 1, "searchImage": "https://example.com/search-image.jpg", "location": { "city": "Munich", "countryCode": "de" }, "ratings": { "overall": 4.2, "rounded": 4 }, "reviewCount": 150, "totalJobs": 25, "isTopCompany": true, "benefits": [] } ], "meta": { "pagination": { "currentPage": 1, "totalPages": 20, "resultsStart": 1, "resultsEnd": 10, "totalResults": 200, "limit": 10, "offset": 0 }, "filters": { "countries": [ "de", "at", "ch" ] }, "duration_ms": 123.45, "cached": false, "cached_at": null } } ``` ### LinkedIn API Scrape LinkedIn profiles, companies, posts, and jobs #### LinkedIn Company - **Docs**: https://scrappa.co/docs/linkedin-api/linkedin_company - **Summary**: Get company information - **Description**: Scrape LinkedIn company page information. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | Yes | LinkedIn company URL | | `use_cache` | boolean | No | Whether to use cached results (default: false) | | `maximum_cache_age` | integer | No | Maximum age of cached results in seconds | **Example request:** ``` GET https://scrappa.co/api/linkedin/company?url=https%3A%2F%2Fwww.linkedin.com%2Fcompany%2Fmicrosoft%2F Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "company": [] } ``` #### LinkedIn Job - **Docs**: https://scrappa.co/docs/linkedin-api/linkedin_job - **Summary**: Get job posting details - **Description**: Scrape public LinkedIn job posting information including title, company, location, description, and application details. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | Yes | LinkedIn job URL | | `use_cache` | boolean | No | Whether to use cached results (default: false) | | `maximum_cache_age` | integer | No | Maximum age of cached results in seconds | **Example request:** ``` GET https://scrappa.co/api/linkedin/job?url=https%3A%2F%2Fwww.linkedin.com%2Fjobs%2Fview%2F4193260076 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "job_id": "4193260076", "title": "Teamleitung SAP Consulting Development (all genders)", "company_name": "adesso SE", "company_url": "https://www.linkedin.com/company/adesso-se", "location": "Dortmund, Germany", "description": "

We are looking for an experienced team lead to drive our SAP consulting practice...

", "employment_type": "FULL_TIME", "date_posted": "2024-11-22", "valid_through": "2025-01-31", "url": "https://www.linkedin.com/jobs/view/4193260076", "apply_url": null, "cached": false, "cached_at": null } ``` #### LinkedIn Jobs Search - **Docs**: https://scrappa.co/docs/linkedin-api/linkedin_jobs_search - **Summary**: Search LinkedIn jobs via Google Search - **Description**: Search public LinkedIn job listings using the normal Google Search stack with an automatic `site:linkedin.com/jobs/view/` constraint. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Job search query. Company, seniority, and location keywords can be included directly in the query. | | `num` | integer | No | Number of results (1-20, default: 10) | | `page` | integer | No | Page number for pagination (1-10). Mutually exclusive with start. | | `start` | integer | No | Starting index for pagination (0-170). Mutually exclusive with page. | | `hl` | string | No | 2-letter language code for interface (e.g., en, de, fr). | | `lr` | string | No | Restrict results to a language (format: lang_xx). | | `gl` | string | No | 2-letter country code for geolocation (e.g., us, de). | | `cr` | string | No | Restrict results to a country (format: countryXX). | | `safe` | string | No | Adult content filtering (active or off). | | `dateRestrict` | string | No | Filter by date range (d7, w1, m1, y1). | | `sort` | string | No | Sort by date (date, date:r, date:d). | | `filter` | integer | No | Enable/disable duplicate filtering (0 or 1). | | `rights` | string | No | Usage rights filter (cc_publicdomain, cc_attribute, cc_sharealike, cc_noncommercial, cc_nonderived). | **Example request:** ``` GET https://scrappa.co/api/linkedin/jobs/search?query=software+engineer+berlin Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "organic_results": [], "search_information": [] } ``` #### LinkedIn Post - **Docs**: https://scrappa.co/docs/linkedin-api/linkedin_post - **Summary**: Get post details - **Description**: Get details from a LinkedIn post or article. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | Yes | LinkedIn post URL | | `use_cache` | boolean | No | Whether to use cached results (default: false) | | `maximum_cache_age` | integer | No | Maximum age of cached results in seconds | **Example request:** ``` GET https://scrappa.co/api/linkedin/post?url=https%3A%2F%2Fwww.linkedin.com%2Fposts%2Fjohn-doe_technology-innovation-activity-1234567890 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "post": { "media": [ { "url": "https://media.licdn.com/image1.jpg", "type": "image" } ], "author": { "name": "John Doe", "headline": "Software Engineer at TechCorp", "profileUrl": "https://www.linkedin.com/in/john-doe" }, "content": "Excited to share our latest product update...", "postUrl": "https://www.linkedin.com/posts/john-doe_technology-innovation-activity-1234567890", "hashtags": [ "#technology", "#innovation" ], "engagement": { "likes": 342, "comments": 28, "reposts": 15, "total": 385 }, "publishedAt": "2024-01-15T10:30:00+00:00", "comments": [ { "author": "Jane Smith", "text": "Great post! Thanks for sharing.", "date": "2024-01-15T11:00:00+00:00" } ] }, "cached": false, "cached_at": null }, "message": "LinkedIn post data retrieved successfully" } ``` #### LinkedIn Profile - **Docs**: https://scrappa.co/docs/linkedin-api/linkedin_profile - **Summary**: Get LinkedIn profile data - **Description**: Scrape public LinkedIn profile information including experience, education, and skills. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | Yes | LinkedIn profile URL | | `use_cache` | boolean | No | Whether to use cached results (default: false) | | `maximum_cache_age` | integer | No | Maximum age of cached results in seconds | **Example request:** ``` GET https://scrappa.co/api/linkedin/profile?url=https%3A%2F%2Fwww.linkedin.com%2Fin%2Fwilliamhgates%2F Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "name": "Bill Gates", "image": "https://media.licdn.com/dms/image/v2/C4E03AQH...", "location": "Seattle, WA", "followers": 35000000, "connections": "500+", "about": "Co-chair of the Bill & Melinda Gates Foundation...", "job_titles": [ "Co-chair", "Founder", "Co-founder" ], "experience": [ { "company": "Bill & Melinda Gates Foundation", "url": "https://www.linkedin.com/company/bill-&-melinda-gates-foundation", "start_date": 2000, "end_date": null } ], "education": [ { "school": "Harvard University", "url": "https://www.linkedin.com/school/harvard-university", "start_date": 1973, "end_date": 1975 } ], "articles": [ { "title": "The Future of Innovation", "url": "https://www.linkedin.com/pulse/future-innovation", "date_published": "2024-01-15", "likes": 12500, "image": "https://media.licdn.com/article-image.jpg" } ], "activity": [ { "title": "Shared a post about climate change", "activityType": "Shared post", "link": "https://www.linkedin.com/posts/activity-123", "image": "https://media.licdn.com/activity-image.jpg" } ], "publications": [ { "name": "How to Avoid a Climate Disaster", "url": "https://www.linkedin.com/pulse/climate-disaster" } ], "projects": [ { "name": "Breakthrough Energy", "url": "https://www.linkedin.com/projects/breakthrough-energy", "dateRange": "2015 - Present", "description": "Investing in clean energy innovation", "contributors": [ { "name": "John Smith", "link": "https://www.linkedin.com/in/johnsmith", "image": "https://media.licdn.com/contributor.jpg" } ] } ], "recommendations": [ { "name": "Jane Doe", "link": "https://www.linkedin.com/in/janedoe", "image": "https://media.licdn.com/recommender.jpg", "text": "Bill is an inspiring leader..." } ], "similar_profiles": [ { "name": "Satya Nadella", "url": "https://www.linkedin.com/in/satya-nadella", "location": "Redmond, WA" } ], "skills": [ "Philanthropy", "Technology", "Leadership", "Public Speaking" ], "cached": false } ``` #### LinkedIn Search - **Docs**: https://scrappa.co/docs/linkedin-api/linkedin_search - **Summary**: Search LinkedIn via Google - **Description**: Search LinkedIn profiles and content via Google. Returns structured results from LinkedIn pages indexed by Google. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Search query for LinkedIn content | | `num` | integer | No | Number of results (1-20, default: 10) | | `page` | integer | No | Page number for pagination (1-10). Mutually exclusive with start. | | `start` | integer | No | Starting index for pagination (0-170). Mutually exclusive with page. | | `hl` | string | No | 2-letter language code for interface (e.g., en, de, fr). | | `lr` | string | No | Restrict results to a language (format: lang_xx). | | `gl` | string | No | 2-letter country code for geolocation (e.g., us, de). | | `cr` | string | No | Restrict results to a country (format: countryXX). | | `safe` | string | No | Adult content filtering (active or off). | | `dateRestrict` | string | No | Filter by date range (d7, w1, m1, y1). | | `sort` | string | No | Sort by date (date, date:r, date:d). | | `filter` | integer | No | Enable/disable duplicate filtering (0 or 1). | | `rights` | string | No | Usage rights filter (cc_publicdomain, cc_attribute, cc_sharealike, cc_noncommercial, cc_nonderived). | **Example request:** ``` GET https://scrappa.co/api/linkedin/search?query=software+engineer Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "organic_results": [], "search_information": [] } ``` ### Pinterest API Search pins and boards on Pinterest #### Pinterest Search - **Docs**: https://scrappa.co/docs/pinterest-api/pinterest_search - **Summary**: Search Pinterest pins - **Description**: Search for pins on Pinterest by keyword. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Search query for Pinterest pins | | `limit` | integer | No | Number of results to request from Pinterest (max 250). Default: 250. Note: Pinterest may return a different number of results than requested. | | `bookmark` | string | No | Pagination token from a previous response. | **Example request:** ``` GET https://scrappa.co/api/pinterest/search?query=home+decor&limit=25 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "pins": [ { "is_video": false, "video_url": null, "video_duration": null } ], "nextBookmark": null } ``` ### Redfin API Search real estate listings and property data from Redfin #### Redfin Home Valuation (AVM) - **Docs**: https://scrappa.co/docs/redfin-api/redfin_valuation - **Summary**: Redfin AVM estimates with value range, comparable sales, and property specs - **Description**:

Get Redfin automated home valuation data for a specific US property. The endpoint is designed for AVM-style workflows where you already have a Redfin property_id from search results or a property details lookup and need a structured estimate, low/high value range, last sale context, and comparable-property signals.

What the Redfin valuation endpoint returns

The response can include the predicted home value, estimated low and high bounds, last sold price, last sold date, beds, baths, square footage, lot size, year built, and comparable sales. These fields are useful for building home equity calculators, pricing research tools, investment screening dashboards, portfolio monitoring, and homeowner-facing value estimate experiences.

How to get a property valuation

Start with Redfin Location Search when you need region IDs, then use Redfin Property Search to find candidate listings and extract the property_id. For a known property, call Redfin Property Details first when you need richer listing context before requesting this valuation endpoint.

When to use valuation instead of property search

Use property search when you need a list of homes in a city, ZIP code, county, or neighborhood. Use Redfin Home Valuation when your workflow centers on one property and needs an estimated value range, comparable sales, and property attributes for underwriting, pricing analysis, or automated real estate reports.

**Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `property_id` | integer | Yes | Redfin property ID (e.g., 194191988 from URL /home/194191988) | | `listing_id` | integer | No | Redfin listing ID (optional) | **Example request:** ``` GET https://scrappa.co/api/redfin/valuation?property_id=194191988 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "data": { "predictedValue": 850000, "predictedValueLow": 800000, "predictedValueHigh": 900000, "lastSoldPrice": 750000, "lastSoldDate": "2020-05-15", "numBeds": 3, "numBaths": 2, "sqFt": { "value": 1800 }, "lotSize": { "value": 4500 }, "yearBuilt": 1920, "comparables": [ { "address": "456 Oak Ave", "price": 875000, "beds": 3, "baths": 2, "sqFt": 1850 } ] } } ``` #### Redfin Locations - **Docs**: https://scrappa.co/docs/redfin-api/redfin_locations - **Summary**: Search for locations - **Description**: Search for locations (cities, ZIP codes, neighborhoods) and get region IDs for use with the search endpoint. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | City, ZIP code, or neighborhood name | **Example request:** ``` GET https://scrappa.co/api/redfin/locations?query=Seattle%2C+WA Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "data": { "locations": [] } } ``` #### Redfin Property - **Docs**: https://scrappa.co/docs/redfin-api/redfin_property - **Summary**: Get property details - **Description**: Get detailed information about a specific Redfin property. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `property_id` | integer | Yes | Redfin property ID (e.g., 60791456 from URL /home/60791456) | **Example request:** ``` GET https://scrappa.co/api/redfin/property?property_id=60791456 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "data": [] } ``` #### Redfin Search - **Docs**: https://scrappa.co/docs/redfin-api/redfin_search - **Summary**: Search Redfin listings - **Description**: Search for real estate listings on Redfin using a region_id, region_type, and market from the locations endpoint. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `region_id` | integer | Yes | Region identifier from /api/redfin/locations. | | `region_type` | integer | Yes | Region type: 1=neighborhood, 2=ZIP, 5=county, 6=city. | | `market` | string | Yes | Market identifier from /api/redfin/locations (e.g., seattle, socal, dc, nyc). | | `min_price` | integer | No | Minimum price filter | | `max_price` | integer | No | Maximum price filter | | `num_beds` | integer | No | Minimum number of bedrooms | | `num_baths` | number | No | Minimum number of bathrooms | | `property_types` | string | No | Comma-separated property types (1-8). | | `status` | integer | No | Listing status: 1=active, 9=all, 130=pending, 131=active+pending. | | `sold_within_days` | integer | No | Include properties sold within this many days (1-365). Required for some regions like Seattle. | | `num_homes` | integer | No | Number of results per page (max 450). | | `page` | integer | No | Page number for pagination. | **Example request:** ``` GET https://scrappa.co/api/redfin/search?region_id=16163®ion_type=6&market=seattle&sold_within_days=30 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "listings": [] } ``` ### SimilarWeb API Get website traffic and analytics data #### SimilarWeb Traffic - **Docs**: https://scrappa.co/docs/similarweb-api/similarweb - **Summary**: Website traffic analytics - **Description**: Get website traffic analytics, rankings, and engagement metrics for any domain. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `domain` | string | Yes | The domain to analyze. Protocols and www prefixes are stripped automatically. | **Example request:** ``` GET https://scrappa.co/api/similarweb?domain=google.com Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "domain": "google.com", "site_name": "google.com", "title": "Google", "category": "computers_electronics_and_technology/search_engines", "global_rank": { "Rank": 1 }, "country_rank": { "Country": 840, "CountryCode": "US", "Rank": 1 }, "engagement": { "visits": "84172772881", "time_on_site": "592.7030576468261", "page_per_visit": "8.358154686471503", "bounce_rate": "0.28502974800803477", "month": "12", "year": "2025" } } ``` ### Startpage Search API Privacy-focused anonymous search engine #### Startpage Search API - **Docs**: https://scrappa.co/docs/startpage-api/startpage_search - **Summary**: Startpage Search API docs for anonymous SERP results in JSON - **Description**: Startpage API documentation for developers who need Startpage search results in JSON. Scrappa's `GET /api/startpage/search` endpoint returns anonymous Startpage web results with titles, descriptions, URLs, domains, and pagination metadata. ## Startpage API for search results Use this Startpage API endpoint when you want Startpage results in an API response instead of maintaining your own scraper. It fits SERP monitoring, privacy-first search products, research pipelines, rank tracking, compliance review tools, and automation workflows that need anonymous web search data. ## What you get from the Startpage API Each response includes ranked organic results with `position`, `title`, `description`, `url`, and `domain`, plus `total_results` and `source`. You can use `language`, `page`, and `safe_search` to request localized or filtered Startpage result sets for privacy-focused search products, SEO analysis, and market research. ## How to call the Startpage Search API Send a `GET` request to `/api/startpage/search` with a required `query` parameter and your Scrappa API key in the `x-api-key` header. Add `language=english`, `page=0`, and `safe_search=true` when you need reproducible first-page results for monitoring, testing, or customer-facing search features. ## Startpage response fields for developers Use `position` to preserve ranking order, `title` and `description` for result previews, `url` for destination links, and `domain` for grouping or deduplication. The `source` field identifies the response as `startpage`, which helps when you combine this endpoint with Google Search or other Scrappa search APIs in the same pipeline. ## When to use Startpage instead of other search APIs Choose this endpoint when you need Google-quality results through a privacy proxy and do not want user-level personalization or tracking signals affecting the result set. That makes it useful for neutral SERP monitoring, compliance-sensitive products, and teams comparing multiple search engines from one Scrappa account. ## Implementation and indexing notes The Startpage Search API is a REST endpoint, so it works with backend jobs, browser-based admin tools, AI agents, and scheduled rank-tracking workflows. For authentication details, see the [API authentication guide](/docs/authentication). To test a request in the browser before writing code, open the [API playground](/docs/playground) or compare usage against the [pay-as-you-go scraping API guide](/post/pay-as-you-go-scraping-api). ## Related search workflow docs Use [Google Search API](/docs/google-search-api/search) when you need Google web results. For a broader overview of pricing, positioning, and usage, see the [Startpage API overview](/apis/startpage-api). **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | The search query string. Example: `privacy tips` | | `language` | string | No | Language filter for search results. Values: `english`, `deutsch`, `french`, `spanish`, `italian`, `portuguese`, `dutch`, `russian`, `chinese`, `japanese`, `arabic`, `all`. Default: `english` | | `page` | integer | No | Page number for pagination. Range: 0-10. Default: 0 | | `safe_search` | boolean | No | Safe search filter to exclude adult content. Values: `true`, `false`. Default: `false` | **Example request:** ``` GET https://scrappa.co/api/startpage/search?query=privacy+tips Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "data": [ { "position": 1, "title": "Privacy Tips - Example", "description": "Example search result demonstrating the response format from Startpage.", "url": "https://example.com/privacy-tips", "domain": "example.com" } ], "people_also_search_for": [], "people_also_ask": [], "knowledge_graph": null, "see_results_about": null, "twitter_card": null, "total_results": 1, "source": "startpage" } ``` ### Stepstone Jobs API Search job listings from Stepstone across Germany, Austria, Netherlands, and Belgium #### Jobs Autosuggest - **Docs**: https://scrappa.co/docs/stepstone-jobs-api/stepstone_autosuggest - **Summary**: Autocomplete job titles, sectors, and locations - **Description**: Get autocomplete suggestions for job search queries. Returns matching job sectors and locations from Stepstone. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Search input to autocomplete (e.g. "Soft", "Berl") | | `country` | string | No | Country code: de (Germany), at (Austria), nl (Netherlands), be (Belgium). Default: de | | `limit` | integer | No | Max suggestions per type (1–20, default: 10) | **Example request:** ``` GET https://scrappa.co/api/stepstone/autosuggest?query=Software&country=de&limit=10 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "suggestions": { "sectors": [ { "value": "1", "label": "Software Development" }, { "value": "2", "label": "Software Engineering" } ], "locations": [ { "value": "berlin", "label": "Berlin" } ] }, "metadata": { "query": "Software", "country": "de", "timestamp": "2026-03-20T10:00:00Z" } } } ``` #### Jobs Search - **Docs**: https://scrappa.co/docs/stepstone-jobs-api/stepstone_jobs - **Summary**: Search Stepstone job listings - **Description**: Search job listings on Stepstone with keyword, location, and filter support. Covers Germany (de), Austria (at), Netherlands (nl), and Belgium (be). **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Job title, skill, or keyword (e.g. "Software Engineer", "Python") | | `location` | string | No | City or region (e.g. "Berlin", "München") | | `country` | string | No | Country code: de (Germany), at (Austria), nl (Netherlands), be (Belgium). Default: de | | `sort` | string | No | Sort order: relevance (default) or date | | `radius` | integer | No | Search radius in kilometres (e.g. 30) | | `job_type` | string | No | Filter by type: full_time, part_time, internship, freelance | | `work_from_home` | boolean | No | Filter for remote/work-from-home jobs (true/false) | | `date_posted` | integer | No | Maximum age of posting in days: 1, 3, 7, 30 | | `page` | integer | No | Page number for pagination (default: 1) | | `limit` | integer | No | Max results to return (1–100, default: 25) | **Example request:** ``` GET https://scrappa.co/api/stepstone/jobs?query=Software+Engineer&location=Berlin&country=de&sort=date&limit=25 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "jobs": [ { "id": "12345678", "title": "Senior Software Engineer (m/w/d)", "url": "https://www.stepstone.de/stellenangebote--Senior-Software-Engineer-Berlin--12345678-inline.html", "company": { "id": 9876, "name": "TechGmbH", "logo_url": "https://cdn.stepstone.de/logo/9876.png", "url": "https://www.stepstone.de/cmp/techgmbh" }, "location": { "formatted": "Berlin", "city": "Berlin", "region": null, "country": null }, "salary": null, "date_posted": "2026-03-19T08:00:00+01:00", "description": "We are looking for a Senior Software Engineer...", "skills": [ "Python", "Docker", "Kubernetes" ], "labels": [ "Home-Office m\u00f6glich" ], "work_from_home": true, "is_highlighted": false, "is_sponsored": false } ], "pagination": { "current_page": 1, "total_pages": 210, "total_jobs": 5234, "has_more": true, "next_page": 2 }, "metadata": { "query": "Software Engineer", "location": "Berlin", "country": "de", "timestamp": "2026-03-20T10:00:00Z" } } } ``` ### TikTok API Access TikTok video, user, music, feed, comment, challenge, playlist, collection, and ad data through the configured RapidAPI upstream. #### Ad Details - **Docs**: https://scrappa.co/docs/tiktok/tiktok_ads_details - **Summary**: Get ad details - **Description**: Resolve a TikTok Creative Center ad URL into ad metadata. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | Yes | TikTok Creative Center ad URL. | **Example request:** ``` GET https://scrappa.co/api/tiktok/ads/details?url=https%3A%2F%2Fads.tiktok.com%2Fbusiness%2Fcreativecenter%2Ftopads%2F7221117041168252930%2F Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "data": [] } ``` #### Challenge Details - **Docs**: https://scrappa.co/docs/tiktok/tiktok_challenges_details - **Summary**: Get challenge details - **Description**: Fetch challenge metadata by challenge ID or challenge name. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `challenge_id` | string | No | TikTok challenge identifier. | | `challenge_name` | string | No | Challenge slug or name. | **Example request:** ``` GET https://scrappa.co/api/tiktok/challenges/details?challenge_id=33380&challenge_name=cosplay Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "data": [] } ``` #### Challenge Posts - **Docs**: https://scrappa.co/docs/tiktok/tiktok_challenges_posts - **Summary**: Get videos for a challenge - **Description**: Fetch TikTok posts for a challenge by challenge ID or challenge name. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `challenge_id` | string | No | TikTok challenge identifier. | | `challenge_name` | string | No | Challenge slug or name. | | `region` | string | No | Optional region code. | **Example request:** ``` GET https://scrappa.co/api/tiktok/challenges/posts?challenge_id=33380&count=10&cursor=0®ion=US Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "data": [] } ``` #### Challenge Search - **Docs**: https://scrappa.co/docs/tiktok/tiktok_challenges_search - **Summary**: Search challenges - **Description**: Search TikTok challenges by keyword. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `keywords` | string | Yes | Challenge search keywords. | | `count` | integer | No | Number of results to return. | **Example request:** ``` GET https://scrappa.co/api/tiktok/challenges/search?keywords=cosplay&count=10&cursor=0 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "data": [] } ``` #### Collection Details - **Docs**: https://scrappa.co/docs/tiktok/tiktok_collections_details - **Summary**: Get collection details - **Description**: Fetch TikTok collection metadata. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `collection_id` | string | Yes | TikTok collection identifier. | **Example request:** ``` GET https://scrappa.co/api/tiktok/collections/details?collection_id=7214174961873849130 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "data": [] } ``` #### Collection Posts - **Docs**: https://scrappa.co/docs/tiktok/tiktok_collections_posts - **Summary**: Get collection videos - **Description**: Fetch TikTok posts from a collection. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `collection_id` | string | Yes | TikTok collection identifier. | | `count` | integer | No | Number of videos to return. | **Example request:** ``` GET https://scrappa.co/api/tiktok/collections/posts?collection_id=7214174961873849130&count=10&cursor=0 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "data": [] } ``` #### Comment List - **Docs**: https://scrappa.co/docs/tiktok/tiktok_comments_list - **Summary**: Get comments for a video - **Description**: Fetch comments for a TikTok video URL. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | Yes | TikTok video URL. | | `count` | integer | No | Number of comments to return. | | `cursor` | string | No | Pagination cursor. | **Example request:** ``` GET https://scrappa.co/api/tiktok/comments/list?url=https%3A%2F%2Fwww.tiktok.com%2F%40tiktok%2Fvideo%2F7568510388342443294&count=10&cursor=0 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "data": [] } ``` #### Comment Replies - **Docs**: https://scrappa.co/docs/tiktok/tiktok_comments_replies - **Summary**: Get replies for a comment - **Description**: Fetch replies for a TikTok comment. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `comment_id` | string | Yes | TikTok comment identifier. | | `video_id` | string | No | Optional TikTok video identifier. | | `count` | integer | No | Number of replies to return. | **Example request:** ``` GET https://scrappa.co/api/tiktok/comments/replies?comment_id=7093219663211053829&video_id=7093219391759764782&count=10&cursor=0 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "data": [] } ``` #### Feed By Region - **Docs**: https://scrappa.co/docs/tiktok/tiktok_feed_list - **Summary**: Get feed videos by region - **Description**: Fetch TikTok feed videos for a specific supported region. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `region` | string | Yes | Region code such as US or JP. | | `count` | integer | No | Number of videos to return. | **Example request:** ``` GET https://scrappa.co/api/tiktok/feed/list?region=JP&count=10 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "data": [] } ``` #### Feed Search - **Docs**: https://scrappa.co/docs/tiktok/tiktok_feed_search - **Summary**: Search videos by keyword - **Description**: Search TikTok feed videos by keywords with optional region and sorting filters. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `keywords` | string | Yes | Feed search keywords. | | `region` | string | No | Optional region code such as US or JP. | | `count` | integer | No | Number of results to return. | | `cursor` | string | No | Pagination cursor for continuing a previous feed search. | | `publish_time` | integer | No | Optional publish-time filter supported by the upstream. | | `sort_type` | integer | No | Optional upstream sort type value for feed search ordering. | **Example request:** ``` GET https://scrappa.co/api/tiktok/feed/search?keywords=basketball®ion=US&count=10&cursor=0 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "data": [] } ``` #### Music Details - **Docs**: https://scrappa.co/docs/tiktok/tiktok_music_details - **Summary**: Get music details - **Description**: Fetch TikTok music metadata by music URL or ID. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | Yes | TikTok music URL or music ID. | **Example request:** ``` GET https://scrappa.co/api/tiktok/music/details?url=7002634556977908485 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "data": [] } ``` #### Music Posts - **Docs**: https://scrappa.co/docs/tiktok/tiktok_music_posts - **Summary**: Get videos for a music track - **Description**: Fetch TikTok posts that use a specific music track. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `music_id` | string | Yes | TikTok music identifier. | | `count` | integer | No | Number of videos to return. | **Example request:** ``` GET https://scrappa.co/api/tiktok/music/posts?music_id=7002634556977908485&count=10&cursor=0 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "data": [] } ``` #### Playlist Details - **Docs**: https://scrappa.co/docs/tiktok/tiktok_playlists_details - **Summary**: Get playlist details - **Description**: Fetch TikTok playlist or mix metadata. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `mix_id` | string | Yes | TikTok mix or playlist identifier. | **Example request:** ``` GET https://scrappa.co/api/tiktok/playlists/details?mix_id=7533060692223982382 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "data": [] } ``` #### Playlist Posts - **Docs**: https://scrappa.co/docs/tiktok/tiktok_playlists_posts - **Summary**: Get playlist videos - **Description**: Fetch TikTok posts from a playlist or mix. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `mix_id` | string | Yes | TikTok mix or playlist identifier. | | `count` | integer | No | Number of videos to return. | **Example request:** ``` GET https://scrappa.co/api/tiktok/playlists/posts?mix_id=7533060692223982382&count=10&cursor=0 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "data": [] } ``` #### Regions - **Docs**: https://scrappa.co/docs/tiktok/tiktok_regions - **Summary**: Get supported regions - **Description**: List the region codes available for feed-based TikTok endpoints. **Example request:** ``` GET https://scrappa.co/api/tiktok/regions Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "data": [ "US", "JP", "DE" ] } ``` #### Similar Users - **Docs**: https://scrappa.co/docs/tiktok/tiktok_user_similar - **Summary**: Get similar users - **Description**: Discover users related to a TikTok account by unique ID or user ID. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `unique_id` | string | No | TikTok username, with or without @. | | `user_id` | string | No | Numeric TikTok user ID. | | `count` | integer | No | Number of users to return. | **Example request:** ``` GET https://scrappa.co/api/tiktok/user/similar?unique_id=ovaksss&user_id=6821796598806348805&count=20 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "data": [] } ``` #### TikTok User Followers - **Docs**: https://scrappa.co/docs/tiktok/tiktok_user_followers - **Summary**: Get TikTok follower lists - **Description**: Fetch TikTok follower lists as structured JSON for audience research, influencer discovery, creator vetting, and social graph analysis. Use a username or numeric user ID to inspect who follows a public TikTok account, page through follower data, and enrich creator intelligence workflows. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `unique_id` | string | No | TikTok username, with or without @. | | `user_id` | string | No | Numeric TikTok user ID. | | `count` | integer | No | Number of followers to return, from 1 to 50. | | `time` | integer | No | Follower pagination token/time marker. | **Example request:** ``` GET https://scrappa.co/api/tiktok/user/followers?user_id=107955&count=50&time=0 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "data": [] } ``` #### TikTok User Search API - **Docs**: https://scrappa.co/docs/tiktok/tiktok_user_search - **Summary**: Search TikTok users by keyword as JSON - **Description**: Use Scrappa's TikTok user search API to find public TikTok accounts by username, brand name, creator niche, product category, or keyword. The `GET /api/tiktok/user/search` endpoint returns matching user records as structured JSON with cursor-based pagination, so developer teams can build creator discovery, influencer research, social listening, and profile enrichment workflows without maintaining a TikTok search scraper. ## TikTok user search API for creator discovery Search keywords such as a creator niche, brand term, campaign phrase, location, product category, or username fragment to discover public TikTok accounts. This endpoint is useful when you need a TikTok username search API for influencer databases, creator marketplaces, social CRM enrichment, competitor account discovery, or brand safety review queues. ## What the TikTok user search response returns The response includes a `users` array with account identifiers and profile fields such as `user_id`, `unique_id`, `nickname`, `avatar`, `follower_count`, and `verified` when the upstream returns them. Use `unique_id` as the human-readable TikTok handle, `user_id` as the stable account identifier for follow-up API calls, `follower_count` for audience-size filtering, and `verified` to separate official or notable accounts from lookalikes. ## How to call the TikTok User Search API Send a `GET` request to `/api/tiktok/user/search` with the required `keywords` parameter and your Scrappa API key in the `x-api-key` header. Add `count` to control page size and pass the returned `cursor` into the next request when `hasMore` is true. ## Common TikTok user search workflows Start with this endpoint when you need a seed list of accounts, then enrich or analyze those users with adjacent TikTok endpoints. Discover creators by niche, fetch profile details with the [TikTok User Profile API](/docs/tiktok/tiktok_user_profile), review recent videos with the [TikTok User Posts API](/docs/tiktok/tiktok_user_posts), inspect follower or following graphs with [TikTok Followers API](/docs/tiktok/tiktok_user_followers), or compare account discovery against keyword video search through the [TikTok Feed Search API](/docs/tiktok/tiktok_feed_search). ## Related TikTok API docs For the full endpoint family, pricing context, and TikTok API use cases, see the [TikTok API overview](/apis/tiktok-api). For authentication details, use the [API authentication guide](/docs/authentication). To test a request before writing code, open the [API playground](/docs/playground). **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `keywords` | string | Yes | Search text for public TikTok users. Use a username fragment, brand name, creator niche, product category, or campaign keyword. | | `count` | integer | No | Number of user matches to return for the page, up to 50. | | `cursor` | string | No | Pagination cursor from the previous response. Pass this value with the same `keywords` query when `hasMore` is true. | **Example request:** ``` GET https://scrappa.co/api/tiktok/user/search?keywords=skincare+creator&count=10&cursor=0 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "processed_time": 0.74, "data": { "users": [ { "user_id": "107955", "unique_id": "tiktok", "nickname": "TikTok", "avatar": "https://example.com/avatar.jpeg", "follower_count": 88900000, "verified": true }, { "user_id": "6821796598806348805", "unique_id": "example.creator", "nickname": "Example Creator", "avatar": "https://example.com/creator.jpeg", "follower_count": 245000, "verified": false } ], "hasMore": true, "cursor": "10" } } ``` #### TikTok Video - **Docs**: https://scrappa.co/docs/tiktok/tiktok_video - **Summary**: Get TikTok video info - **Description**: Resolve a TikTok video, photo post, short URL, or raw video ID into metadata and playback URLs from the configured RapidAPI upstream. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | Yes | TikTok video URL, short URL, photo URL, or raw video ID. | | `hd` | boolean | No | Request the HD playback URL when available. Accepts true/false or 1/0. | **Example request:** ``` GET https://scrappa.co/api/tiktok/video?url=https%3A%2F%2Fwww.tiktok.com%2F%40tiktok%2Fvideo%2F7568510388342443294&hd=1 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "data": { "title": "Example TikTok", "play": "https://example.com/play.mp4", "wmplay": "https://example.com/wmplay.mp4", "hdplay": "https://example.com/hdplay.mp4" } } ``` #### User Collections - **Docs**: https://scrappa.co/docs/tiktok/tiktok_collections_list - **Summary**: Get collections by user - **Description**: Fetch TikTok collections created by a user. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `unique_id` | string | No | TikTok username, with or without @. | | `user_id` | string | No | Numeric TikTok user ID. | | `count` | integer | No | Number of collections to return. | **Example request:** ``` GET https://scrappa.co/api/tiktok/collections/list?unique_id=tyler3497&user_id=6631770475491115014&count=10&cursor=0 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "data": [] } ``` #### User Favorites - **Docs**: https://scrappa.co/docs/tiktok/tiktok_user_favorites - **Summary**: Get user favorite videos - **Description**: Fetch public favorite videos for a TikTok user when available upstream. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `unique_id` | string | No | TikTok username, with or without @. | | `user_id` | string | No | Numeric TikTok user ID. | | `count` | integer | No | Number of favorites to return. | | `cursor` | string | No | Pagination cursor for the favorites list. | | `time` | integer | No | Optional favorites time marker when provided by the upstream. | **Example request:** ``` GET https://scrappa.co/api/tiktok/user/favorites?unique_id=%40tiktok&count=10&cursor=0 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "data": [] } ``` #### User Following - **Docs**: https://scrappa.co/docs/tiktok/tiktok_user_following - **Summary**: Get user following list - **Description**: Fetch the accounts a TikTok user follows. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `unique_id` | string | No | TikTok username, with or without @. | | `user_id` | string | No | Numeric TikTok user ID. | | `time` | integer | No | Following pagination token/time marker. | **Example request:** ``` GET https://scrappa.co/api/tiktok/user/following?user_id=107955&count=50&time=0 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "data": [] } ``` #### User Playlists - **Docs**: https://scrappa.co/docs/tiktok/tiktok_playlists_list - **Summary**: Get playlists by user - **Description**: Fetch TikTok playlists created by a user. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `unique_id` | string | No | TikTok username, with or without @. | | `user_id` | string | No | Numeric TikTok user ID. | | `count` | integer | No | Number of playlists to return. | **Example request:** ``` GET https://scrappa.co/api/tiktok/playlists/list?unique_id=%40tiktok&count=10&cursor=0 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "data": [] } ``` #### User Posts - **Docs**: https://scrappa.co/docs/tiktok/tiktok_user_posts - **Summary**: Get posts by user - **Description**: Fetch public TikTok posts for a user by unique ID or user ID. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `unique_id` | string | No | TikTok username, with or without @. | | `user_id` | string | No | Numeric TikTok user ID. | | `count` | integer | No | Number of posts to return. | | `cursor` | string | No | Pagination cursor for fetching the next page of results. | **Example request:** ``` GET https://scrappa.co/api/tiktok/user/posts?unique_id=%40tiktok&count=10&cursor=0 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "data": [] } ``` #### User Profile - **Docs**: https://scrappa.co/docs/tiktok/tiktok_user_profile - **Summary**: Get user profile - **Description**: Fetch public TikTok profile data by unique ID or user ID. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `unique_id` | string | No | TikTok username, with or without @. | | `user_id` | string | No | Numeric TikTok user ID. | **Example request:** ``` GET https://scrappa.co/api/tiktok/user/profile?unique_id=%40tiktok Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "data": [] } ``` #### User Story - **Docs**: https://scrappa.co/docs/tiktok/tiktok_user_story - **Summary**: Get user story - **Description**: Fetch TikTok story data for a user by unique ID or user ID. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `unique_id` | string | No | TikTok username, with or without @. | | `user_id` | string | No | Numeric TikTok user ID. | **Example request:** ``` GET https://scrappa.co/api/tiktok/user/story?unique_id=%40isi.cos Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "msg": "success", "data": [] } ``` ### TrustedShops API Get TrustedShops shop discovery, market, category, profile, review, and rating data for European e-commerce intelligence. #### TrustedShops Categories - **Docs**: https://scrappa.co/docs/trustedshops-api/trustedshops_categories - **Summary**: Get all shop categories - **Description**: Get available TrustedShops shop categories for a specific market and return category names, IDs, total shop counts, and URL path values as structured JSON. Use [TrustedShops Markets](/docs/trustedshops-api/trustedshops_markets) to choose a supported country code first. Then pass a returned `urlPath` value to [TrustedShops Category Shops](/docs/trustedshops-api/trustedshops_category_shops) to browse shops inside that category. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `market` | string | No | Market code filter (DEU, GBR, AUT, CHE, NLD, ESP, ITA, FRA, BEL, POL, PRT). Default: DEU | **Example request:** ``` GET https://scrappa.co/api/trustedshops/categories?market=DEU Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "categories": [ { "name": "Bekleidung", "urlPath": "bekleidung", "id": 23, "totalCount": 9678 } ] } ``` #### TrustedShops Category Shops - **Docs**: https://scrappa.co/docs/trustedshops-api/trustedshops_category_shops - **Summary**: Get shops by category - **Description**: Browse shops within a TrustedShops category and market, then return paginated merchant profiles with TSIDs, names, ratings, review counts, certification state, categories, and profile URLs. Use [TrustedShops Categories](/docs/trustedshops-api/trustedshops_categories) first to get valid category `urlPath` values for a market. Use [TrustedShops Shop Profile](/docs/trustedshops-api/trustedshops_shop) or [TrustedShops Reviews](/docs/trustedshops-api/trustedshops_reviews) when you want to enrich or monitor shops returned by this category browsing endpoint. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `category` | string | Yes | Category URL path (e.g. bekleidung). Use the Categories endpoint to get available values. | | `page` | integer | No | Page number for pagination (0-500). Default: 0 | | `market` | string | No | Market code filter (DEU, GBR, AUT, CHE, NLD, ESP, ITA, FRA, BEL, POL, PRT). Default: DEU | **Example request:** ``` GET https://scrappa.co/api/trustedshops/category-shops?category=bekleidung&page=0&market=DEU Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "metaData": { "totalShopCount": 9678, "totalPageCount": 484 }, "shops": [], "categories": [] } ``` #### TrustedShops Markets - **Docs**: https://scrappa.co/docs/trustedshops-api/trustedshops_markets - **Summary**: List supported TrustedShops markets - **Description**: List every TrustedShops market supported by Scrappa and return the country names plus ISO alpha-3 market codes required by market-aware endpoints. This free metadata endpoint helps you choose valid country filters before running shop search, category discovery, or category browsing requests. Use [TrustedShops Search](/docs/trustedshops-api/trustedshops_search) when you already know a shop or brand name. Use [TrustedShops Categories](/docs/trustedshops-api/trustedshops_categories) to fetch category URL paths for a market, then call [TrustedShops Category Shops](/docs/trustedshops-api/trustedshops_category_shops) to page through shops in that category. **Example request:** ``` GET https://scrappa.co/api/trustedshops/markets Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "markets": [ { "code": "DEU", "name": "Germany" }, { "code": "GBR", "name": "United Kingdom" } ], "total_markets": 11 }, "message": "TrustedShops markets retrieved successfully" } ``` #### TrustedShops Reviews - **Docs**: https://scrappa.co/docs/trustedshops-api/trustedshops_reviews - **Summary**: Get shop reviews - **Description**: Fetch review records for a specific TrustedShops shop by TSID and return structured review data for reputation monitoring, product quality analysis, review dashboards, and merchant intelligence workflows. Use [TrustedShops Search](/docs/trustedshops-api/trustedshops_search) to find the TSID for a shop name or domain first. Call [TrustedShops Shop Profile](/docs/trustedshops-api/trustedshops_shop) when you need profile metadata for the same merchant, including its target market and profile-level fields. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `tsid` | string | Yes | TrustedShops shop ID | **Example request:** ``` GET https://scrappa.co/api/trustedshops/reviews/{tsid}?tsid=XFB15FFBDE1DEE7A55D292A7D48598A6A Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "reviews": [] } ``` #### TrustedShops Search - **Docs**: https://scrappa.co/docs/trustedshops-api/trustedshops_search - **Summary**: Search TrustedShops shop profiles - **Description**: Search TrustedShops shop profiles by brand name, domain, or merchant keyword and return matching European e-commerce shops as structured JSON. Each result can include the shop name, TSID, TrustedShops profile URL, rating summary, review count, category assignments, certification state, and market-specific metadata. Use this endpoint when you need to resolve a human search term into TrustedShops identifiers before calling [TrustedShops Shop Profile](/docs/trustedshops-api/trustedshops_shop) or [TrustedShops Reviews](/docs/trustedshops-api/trustedshops_reviews). Pair search with [TrustedShops Markets](/docs/trustedshops-api/trustedshops_markets) to choose the right country code and [TrustedShops Categories](/docs/trustedshops-api/trustedshops_categories) when building category-level shop discovery workflows. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `q` | string | Yes | Shop search query | | `page` | integer | No | Page number for pagination (0-100) | | `market` | string | No | Market code filter (DEU, GBR, AUT, CHE, NLD, ESP, ITA, FRA, BEL, POL, PRT) | **Example request:** ``` GET https://scrappa.co/api/trustedshops/search?q=amazon&page=0&market=DEU Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "metaData": { "totalShopCount": 4227, "totalPageCount": 212 }, "shops": [], "categories": [] } ``` #### TrustedShops Shop Profile - **Docs**: https://scrappa.co/docs/trustedshops-api/trustedshops_shop - **Summary**: Get shop profile details - **Description**: Fetch a single TrustedShops shop profile by TSID and return merchant-level profile data as structured JSON. The response is useful when you need to enrich a known TrustedShops ID with the shop URL, display name, language, target market, and profile metadata before joining it to reviews or search results. Start with [TrustedShops Search](/docs/trustedshops-api/trustedshops_search) if you need to discover the TSID from a shop name or domain. Use [TrustedShops Reviews](/docs/trustedshops-api/trustedshops_reviews) for review-level records from the same TSID, or [TrustedShops Markets](/docs/trustedshops-api/trustedshops_markets) to validate the market codes used across the TrustedShops docs cluster. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `tsid` | string | Yes | TrustedShops ID | **Example request:** ``` GET https://scrappa.co/api/trustedshops/shop/{tsid}?tsid=X123 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "shop": [] } ``` ### Trustpilot API Search businesses and get reviews from Trustpilot #### Trustpilot Businesses - **Docs**: https://scrappa.co/docs/trustpilot-api/trustpilot_businesses - **Summary**: Search multiple businesses - **Description**: Search for businesses on Trustpilot with filters. Filters are applied after fetch; pagination counts reflect Trustpilot results. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `category` | string | Yes | Category slug from the Categories endpoint (e.g. electronics_technology). Use the slug field from /api/trustpilot/categories response | | `page` | integer | No | Page number (1-999) | | `sort` | string | No | reviews_count or latest_review | | `claimed` | boolean | No | Filter claimed businesses | | `country` | string | No | Country code (ISO-2) | | `limit` | integer | No | Max results per page (1-50) | | `trustscore` | float | No | Minimum trustscore (3.0, 4.0, 4.5) | **Example request:** ``` GET https://scrappa.co/api/trustpilot/businesses?category=electronics Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "businesses": [] } ``` #### Trustpilot Categories - **Docs**: https://scrappa.co/docs/trustpilot-api/trustpilot_categories - **Summary**: List business categories - **Description**: Get list of business categories on Trustpilot. **Example request:** ``` GET https://scrappa.co/api/trustpilot/categories Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "categories": [] } ``` #### Trustpilot Company Details - **Docs**: https://scrappa.co/docs/trustpilot-api/trustpilot_company_details - **Summary**: Get company details - **Description**: Get detailed company profile from Trustpilot. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `company_domain` | string | Yes | Company domain | | `locale` | string | No | Locale for Trustpilot page localization (e.g. en-US, de-DE). Review language defaults to languages=all unless the languages parameter is set. | **Example request:** ``` GET https://scrappa.co/api/trustpilot/company-details?company_domain=amazon.com Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "company": [] } ``` #### Trustpilot Company Reviews - **Docs**: https://scrappa.co/docs/trustpilot-api/trustpilot_company_reviews - **Summary**: Get company reviews - **Description**: Get reviews for a company on Trustpilot. Filters are applied after fetch; pagination counts reflect Trustpilot results. Review language defaults to languages=all; pass a 2-letter language code such as languages=de for German reviews. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `company_domain` | string | Yes | Company domain | | `page` | integer | No | Page number (1-999) | | `verified` | boolean | No | Filter verified reviews | | `with_replies` | boolean | No | Only reviews with replies | | `sort` | string | No | Sort order. Valid values: "relevance" for Trustpilot relevance ranking or "recency" for newest reviews first. No other sort values are accepted. | | `query` | string | No | Search within review text/title | | `rating` | string | No | Comma-separated ratings (e.g. 4,5) | | `locale` | string | No | Locale (e.g. en-US, de-DE) | | `languages` | string | No | Review language filter. Defaults to "all". Use "all" to fetch reviews in all languages, or a 2-letter code like en or de. Trustpilot expects language codes here, not locale codes: use de, not de-DE. | | `fields` | string | No | Comma-separated fields to include (e.g., reviews,businessUnit.displayName). Use dot notation for nested fields. Omit to get all fields. | **Example request:** ``` GET https://scrappa.co/api/trustpilot/company-reviews?company_domain=amazon.com&languages=all Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "reviews": [] } ``` #### Trustpilot Company Search - **Docs**: https://scrappa.co/docs/trustpilot-api/trustpilot_company_search - **Summary**: Search companies on Trustpilot - **Description**: Search for companies on Trustpilot by name or keyword. Filters are applied after fetch; pagination counts reflect Trustpilot results. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Search query | | `page` | integer | No | Page number (1-999) | | `country` | string | No | Country code (ISO-2) | | `min_rating` | string | No | Minimum rating (any, 3, 4, 4.5) | | `min_review_count` | string | No | Minimum reviews (any, 25, 50, 100, 250, 500) | | `locale` | string | No | Locale (e.g. en-US, de-DE) | **Example request:** ``` GET https://scrappa.co/api/trustpilot/company-search?query=amazon Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "businessUnits": [] } ``` #### Trustpilot Countries - **Docs**: https://scrappa.co/docs/trustpilot-api/trustpilot_countries - **Summary**: List available countries - **Description**: Get list of countries available on Trustpilot for filtering businesses. **Example request:** ``` GET https://scrappa.co/api/trustpilot/countries Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "countries": [] } ``` ### Vinted API Access Vinted marketplace data including product search, item details, user profiles, and categories across multiple European countries. #### Categories - **Docs**: https://scrappa.co/docs/vinted-api/vinted_categories - **Summary**: Get all catalog categories - **Description**: Get all available catalog categories with their subcategories. Use the returned catalog IDs with the search endpoint. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | Country code for Vinted domain. Defaults to FR. | **Example request:** ``` GET https://scrappa.co/api/vinted/categories?country=DE Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "catalogs": [] } ``` #### Countries - **Docs**: https://scrappa.co/docs/vinted-api/vinted_countries - **Summary**: List supported Vinted market codes - **Description**: Get the supported Vinted countries, TLDs, and currencies. Use this free endpoint to discover valid `country` values before making paid Vinted API calls. **Example request:** ``` GET https://scrappa.co/api/vinted/countries Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "countries": [ { "code": "FR", "name": "France", "tld": "fr", "currency": "EUR" }, { "code": "DE", "name": "Germany", "tld": "de", "currency": "EUR" }, { "code": "US", "name": "United States", "tld": "com", "currency": "USD" } ], "total_countries": 19 }, "message": "Vinted countries retrieved successfully" } ``` #### Get Filters - **Docs**: https://scrappa.co/docs/vinted-api/vinted_filters - **Summary**: Get available catalog filters - **Description**: Get available filter options for a category including brands, sizes, colors, materials, and conditions. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `catalog_ids` | string | No | Category IDs to get filters for (comma-separated) | | `country` | string | No | Country code for Vinted domain. Defaults to FR. | **Example request:** ``` GET https://scrappa.co/api/vinted/filters?country=DE Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "filters": [] } ``` #### Item Shipping - **Docs**: https://scrappa.co/docs/vinted-api/vinted_item_shipping - **Summary**: Get shipping details for an item - **Description**: Get available shipping options and costs for a specific item. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `item_id` | string | Yes | The Vinted item ID | | `country` | string | No | Country code for Vinted domain. Defaults to FR. | **Example request:** ``` GET https://scrappa.co/api/vinted/item-shipping?item_id=1234567890 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "shipping": [] } ``` #### Search Items - **Docs**: https://scrappa.co/docs/vinted-api/vinted_search - **Summary**: Search for items on Vinted marketplace - **Description**: Search and filter items on Vinted marketplace. Supports full-text search, category filtering, brand filtering, size/material/status filtering, price range, and sorting options. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | No | Search query text (e.g., "nike shoes") | | `country` | string | No | Country code for Vinted domain (FR, DE, BE, IT, ES, NL, etc.). Defaults to FR. | | `page` | integer | No | Page number for pagination. Defaults to 1. | | `per_page` | integer | No | Number of items per page (max 100). Defaults to 24. | | `order` | string | No | Sort order: relevance, newest_first, price_low_to_high, price_high_to_low | | `catalog_ids` | string | No | Category IDs to filter by (comma-separated) | | `brand_ids` | string | No | Brand IDs to filter by (comma-separated) | | `size_ids` | string | No | Size IDs to filter by (comma-separated) | | `color_ids` | string | No | Color IDs to filter by (comma-separated) | | `material_ids` | string | No | Material IDs to filter by (comma-separated) | | `status_ids` | string | No | Status IDs to filter by (comma-separated) | | `price_from` | number | No | Minimum price filter (inclusive). Items below this price will be filtered out from results. | | `price_to` | number | No | Maximum price filter (inclusive). Items above this price will be filtered out from results. | **Example request:** ``` GET https://scrappa.co/api/vinted/search?query=nike+shoes&country=DE Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "items": [], "pagination": [] } ``` #### Search Suggestions - **Docs**: https://scrappa.co/docs/vinted-api/vinted_suggestions - **Summary**: Get search autocomplete suggestions - **Description**: Get autocomplete suggestions for a search query. Useful for implementing search-as-you-type functionality. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Partial search query to get suggestions for | | `country` | string | No | Country code for Vinted domain. Defaults to FR. | **Example request:** ``` GET https://scrappa.co/api/vinted/suggestions?query=nik Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "suggestions": [] } ``` #### Similar Items - **Docs**: https://scrappa.co/docs/vinted-api/vinted_similar_items - **Summary**: Get similar items - **Description**: Get items similar to a specific item, typically from the same seller or category. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `item_id` | string | Yes | The Vinted item ID | | `country` | string | No | Country code for Vinted domain. Defaults to FR. | | `page` | integer | No | Page number for pagination. Defaults to 1. | **Example request:** ``` GET https://scrappa.co/api/vinted/similar-items?item_id=1234567890 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "code": 0, "items": [], "pagination": { "current_page": 1, "total_pages": 5, "total_entries": 100 } } ``` #### User Items - **Docs**: https://scrappa.co/docs/vinted-api/vinted_user_items - **Summary**: Get items listed by a user - **Description**: Get items listed by a specific user in their wardrobe/closet. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `user_id` | string | Yes | The Vinted user ID | | `country` | string | No | Country code for Vinted domain. Defaults to FR. | | `page` | integer | No | Page number for pagination | | `per_page` | integer | No | Number of items per page (max 100). Defaults to 24. | | `order` | string | No | Sort order: relevance, newest_first, price_low_to_high, price_high_to_low | **Example request:** ``` GET https://scrappa.co/api/vinted/user-items?user_id=12345678 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "items": [], "pagination": [] } ``` #### User Profile - **Docs**: https://scrappa.co/docs/vinted-api/vinted_user_profile - **Summary**: Get user profile information - **Description**: Get public profile information for a Vinted user including ratings, review count, and items listed. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `user_id` | string | Yes | The Vinted user ID | | `country` | string | No | Country code for Vinted domain. Defaults to FR. | **Example request:** ``` GET https://scrappa.co/api/vinted/user-profile?user_id=12345678 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "user": [] } ``` #### Vinted API Item Details - **Docs**: https://scrappa.co/docs/vinted-api/vinted_item_details - **Summary**: Public API alternative for Vinted item details - **Description**: Looking for official Vinted API documentation or a public API for item details? Vinted does not provide a generally available public API for developers. Scrappa provides a documented Vinted item details API endpoint that returns listing title, description, photos, pricing, shipping costs, seller profile, item condition, brand, size, category, favorites, and view counts as structured JSON across 19 countries. Use this endpoint when a Vinted search result needs to become a complete product record for resale analytics, price monitoring, catalog enrichment, fraud review, or seller-quality scoring. A typical workflow is to find item IDs with the Vinted Search Items endpoint, enrich each listing with Item Details, compare alternatives with Similar Items, and check delivery context with Item Shipping. Item Details is the enrichment step in a Vinted data workflow. Search results are useful for discovery, but the item details response is where applications can inspect the listing description, gallery, seller reputation, favorites, views, availability, category, condition, brand, size, total item price, shipping price, service fee, source URL, and image fields before storing or scoring a product record. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `item_id` | string | Yes | The Vinted item ID | | `country` | string | No | Country code for Vinted domain. Defaults to FR. | **Example request:** ``` GET https://scrappa.co/api/vinted/item-details?item_id=1234567890&country=DE Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "item": { "id": "1234567890", "title": "Nike Air Max 90", "description": "Great condition Nike Air Max 90 sneakers. Barely worn and shipped in the original box.", "price": { "amount": 45, "currency": "EUR" }, "total_item_price": 50.49, "shipping_price": 3.49, "service_fee": 2, "brand": "Nike", "category": "Shoes", "size": "EU 42", "color": "Black", "condition": "Very good", "condition_title": "Very good", "url": "https://www.vinted.de/items/1234567890-nike-air-max-90", "availability": "InStock", "image_url": "https://images1.vinted.net/t/01_01234_example/image.jpg", "photos": [ { "url": "https://images1.vinted.net/t/01_01234_example/image.jpg" }, { "url": "https://images1.vinted.net/t/02_01234_example/image.jpg" }, { "url": "https://images1.vinted.net/t/03_01234_example/image.jpg" } ], "seller": { "id": 98765432, "login": "seller123", "feedback_count": 50, "feedback_reputation": 4.8 }, "favourite_count": 15, "view_count": 234 } }, "message": "Item details retrieved successfully", "meta": { "duration_ms": 123.45, "scraped_at": "2026-02-01T00:00:00.000Z", "cached": false } } ``` ### Web Scraper API Scrape any website and extract structured data #### Impressum Extraction - **Docs**: https://scrappa.co/docs/web-scraper/impressum_extraction - **Summary**: Extract structured data from impressum pages - **Description**: Dynamically extracts specified fields from a domain's impressum page. Uses Brave Search to find the impressum, fetches the page, and uses AI to extract the requested fields. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `domain` | string | Yes | The domain to search for impressum (e.g., example.com) | | `fields` | string | Yes | Comma-separated list of field names to extract (e.g., company_name,address,email,vat_id) | | `language` | string | No | Language code for extracted values (e.g., de, en, fr). Country names and other localizable values will be returned in this language. | **Example request:** ``` GET https://scrappa.co/api/web-scraper/impressum?domain=example.com&fields=company_name%2Caddress%2Cemail%2Cvat_id&language=de Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "company_name": "Example GmbH", "address": "Musterstra\u00dfe 1, 12345 Berlin", "email": "info@example.com", "vat_id": "DE123456789" }, "impressum_url": "https://example.com/impressum", "error": null } ``` #### Web Scraper - **Docs**: https://scrappa.co/docs/web-scraper/web_scraper - **Summary**: Scrape any URL and extract structured data like title, links, emails, and more - **Description**: Fetch any URL and extract structured data including title, meta description, keywords, favicon, social links, all links on the page, emails, phone numbers, images, body text, and detected languages. Returns the site's HTTP status code separately so you can distinguish site errors (404, 500) from infrastructure errors. Use response_type=markdown to get only the page content as clean markdown. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | Yes | The URL to scrape (must include protocol, e.g., https://example.com) | | `include_html` | boolean | No | Set to true to include the raw HTML in the response. Default: false. Ignored when response_type=markdown | | `response_type` | string | No | Set to "markdown" to return only the page content as clean markdown text. When set to markdown, only the markdown content is returned (not JSON). Default: json | **Example request:** ``` GET https://scrappa.co/api/web-scraper?url=https%3A%2F%2Fexample.com&include_html=0 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "site_status_code": 200, "url": "https://example.com", "final_url": "https://example.com", "data": { "title": "Example Domain", "description": "This domain is for use in illustrative examples.", "keywords": [], "favicon": "https://example.com/favicon.ico", "social_links": { "linkedin": null, "twitter": null, "facebook": null, "instagram": null, "youtube": null, "tiktok": null }, "extracted_keywords": [ "domain", "example", "illustrative" ], "links": [ "https://www.iana.org/domains/example" ], "emails": [], "phone_numbers": [], "images": [], "body_text": "Example Domain This domain is for use in illustrative examples in documents.", "languages_detected": [ "en" ], "html": null } } ``` ### WLW API Search for B2B suppliers, products, and companies on wlw.de (Wer liefert was) #### WLW Search - **Docs**: https://scrappa.co/docs/wlw-api/wlw_search - **Summary**: Search B2B suppliers and products on WLW - **Description**: 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. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `q` | string | Yes | Search query (e.g., "agentur", "software", "logistik") | | `page` | integer | No | Page number (default: 1) | | `per_page` | integer | No | Results per page (1-50, default: 15) | | `country` | string | No | Country code for site context: DE (Germany), AT (Austria), CH (Switzerland). Default: DE | | `countries` | string | No | Filter results by country codes (comma-separated, e.g., "DE,AT") | | `category` | string | No | Filter by category ID (returned in filters of search results) | | `supplier_type` | string | No | Filter by supplier type (comma-separated, e.g., "producer,dealer,service_provider") | | `attributes` | string | No | Filter by attribute codes (comma-separated, returned in filters) | | `verified` | boolean | No | Only show verified suppliers (true/false) | | `top_responder` | boolean | No | Only show top responders (true/false) | | `latitude` | number | No | Location filter: latitude coordinate | | `longitude` | number | No | Location filter: longitude coordinate | | `radius` | integer | No | Location filter: search radius in km (requires latitude/longitude) | | `sort` | string | No | Sort order: "relevance" (default), "recency", "trending", "distance" (requires location) | | `language` | string | No | Language code (default: de) | **Example request:** ``` GET https://scrappa.co/api/wlw/search?q=agentur&country=DE Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "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 } } ``` ### YouTube API YouTube API - search videos, channels, comments, and more #### YouTube Channel Community - **Docs**: https://scrappa.co/docs/youtube-api/youtube_channel_community - **Summary**: Get community posts - **Description**: Get community posts from a YouTube channel. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `channel_id` | string | Yes | YouTube channel ID (alias: channelId) | | `channelId` | string | Yes | YouTube channel ID (alias: channel_id) | | `continuation` | string | No | Token for pagination from previous response | **Example request:** ``` GET https://scrappa.co/api/youtube/channel-community?channel_id=UCX6OQ3DkcsbYNE6H8uQQuVA Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "channelId": "UCX6OQ3DkcsbYNE6H8uQQuVA", "posts": [ { "id": "post123", "text": "Community post content...", "publishedTime": "2 days ago", "likeCount": 5000 } ], "pagination": { "continuationToken": "eyJ...", "hasMore": true } } ``` #### YouTube Channel Info - **Docs**: https://scrappa.co/docs/youtube-api/youtube_channel - **Summary**: Channel profile and stats - **Description**: Get channel information including subscriber count, video count, and description. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `channel_id` | string | Yes | YouTube channel ID (alias: channelId) | | `channelId` | string | Yes | YouTube channel ID (alias: channel_id) | **Example request:** ``` GET https://scrappa.co/api/youtube/channel?channel_id=UCX6OQ3DkcsbYNE6H8uQQuVA Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "id": "UCX6OQ3DkcsbYNE6H8uQQuVA", "name": "MrBeast", "description": "SUBSCRIBE FOR A COOKIE!", "subscriberCount": "467M subscribers 948 videos", "videoCount": "Unavailable", "viewCount": "Unavailable", "thumbnail": "https://yt3.googleusercontent.com/...", "banner": "https://yt3.googleusercontent.com/...", "country": "US", "verified": true } ``` #### YouTube Channel Playlists - **Docs**: https://scrappa.co/docs/youtube-api/youtube_channel_playlists - **Summary**: Get channel playlists - **Description**: Get playlists created by a YouTube channel. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `channel_id` | string | Yes | YouTube channel ID (alias: channelId) | | `channelId` | string | Yes | YouTube channel ID (alias: channel_id) | **Example request:** ``` GET https://scrappa.co/api/youtube/channel-playlists?channel_id=UCX6OQ3DkcsbYNE6H8uQQuVA Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "channelId": "UCX6OQ3DkcsbYNE6H8uQQuVA", "playlists": [ { "id": "PLplaylist123", "title": "Playlist Title", "videoCount": 25, "thumbnail": "https://i.ytimg.com/..." } ], "pagination": { "hasMore": true } } ``` #### YouTube Channel Videos - **Docs**: https://scrappa.co/docs/youtube-api/youtube_channel_videos - **Summary**: List YouTube channel uploads as JSON - **Description**: Use the YouTube Channel Videos API when you need a channel upload feed in structured JSON. Send a channel ID and Scrappa returns video IDs, titles, thumbnails, duration, view counts, publish timing, short/live flags, the selected sort order, and pagination metadata. ## YouTube channel uploads API This endpoint is built for developers who need to collect videos from a specific YouTube channel without maintaining browser automation or reverse-engineering YouTube page markup. It fits creator monitoring, competitive content research, media databases, video discovery tools, sponsorship workflows, and analytics jobs that need repeatable channel-level video lists. ## What the channel videos response includes Each response includes a `videos` array with upload-level fields such as `id`, `title`, `thumbnail`, `duration`, `viewCount`, and `publishedTime`. The `pagination` object exposes `page`, `pageSize`, `hasMore`, and a `continuationToken` when more results are available, so you can crawl large channels incrementally instead of relying on a single oversized request. ## Sorting and pagination Use `sort=newest` for monitoring fresh uploads, `sort=popular` for finding the channel's top-performing videos, and `sort=oldest` when you need a historical crawl from the beginning of a channel. Set `limit` to control page size, then pass the returned `continuation` token or page through your next request when `hasMore` is true. ## Related YouTube API workflow Start with [YouTube Channel Info](/docs/youtube-api/youtube_channel) when you need the channel name, handle, subscriber count, and profile metadata before collecting uploads. Use [YouTube Video Info](/docs/youtube-api/youtube_video) to enrich individual video IDs, [YouTube Comments](/docs/youtube-api/youtube_comments) for audience response, and [YouTube Playlist](/docs/youtube-api/youtube_playlist) when videos are organized by playlist instead of the channel uploads tab. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `channel_id` | string | Yes | YouTube channel ID (alias: channelId) | | `channelId` | string | Yes | YouTube channel ID (alias: channel_id) | | `limit` | integer | No | Number of videos (default: 10, max: 30) | | `page` | integer | No | Page number (default: 1, max: 10) | | `sort` | string | No | Sort order: newest, popular, oldest (default: newest) | | `continuation` | string | No | Token for pagination from previous response | **Example request:** ``` GET https://scrappa.co/api/youtube/channel-videos?channel_id=UCX6OQ3DkcsbYNE6H8uQQuVA Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "channelId": "UCX6OQ3DkcsbYNE6H8uQQuVA", "sort": "newest", "videos": [ { "id": "pAnGwRiQ4-4", "title": "$1 vs $1,000,000,000 Futuristic Tech!" } ], "pagination": { "continuationToken": "eyJjaGFubmVsSWQiOiJVQ1g2T1EzRGtjc2JZTkU2SDh1UVF1VkEiLCJzb3J0IjoibmV3ZXN0IiwicGFnZSI6MX0.6ce89d9d", "hasMore": true, "page": 1, "pageSize": 10 } } ``` #### YouTube Comments - **Docs**: https://scrappa.co/docs/youtube-api/youtube_comments - **Summary**: Fetch video comments - **Description**: Get comments from a YouTube video. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `video_id` | string | Yes | YouTube video ID | | `limit` | integer | No | Number of comments | **Example request:** ``` GET https://scrappa.co/api/youtube/comments?video_id=dQw4w9WgXcQ Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "videoId": "dQw4w9WgXcQ", "videoTitle": "Rick Astley - Never Gonna Give You Up", "sort": "top", "comments": [ { "id": "UgzG...", "text": "This is a comment...", "author": "Username", "authorChannelId": "UCxxxxx", "likeCount": 1000, "publishedTime": "2 years ago" } ], "pagination": { "totalComments": 2500000, "hasMore": true }, "metadata": { "commentsDisabled": false } } ``` #### YouTube Locales - **Docs**: https://scrappa.co/docs/youtube-api/youtube_external_locales - **Summary**: List supported locales - **Description**: Get the available locale combinations supported by the external YouTube service. **Example request:** ``` GET https://scrappa.co/api/youtube-external/locales Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "locales": [ { "hl": "en", "gl": "US" }, { "hl": "de", "gl": "DE" } ] } ``` #### YouTube Playlist - **Docs**: https://scrappa.co/docs/youtube-api/youtube_playlist - **Summary**: Get playlist videos - **Description**: Get videos from a YouTube playlist. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `playlist_id` | string | Yes | YouTube playlist ID | **Example request:** ``` GET https://scrappa.co/api/youtube/playlist?playlist_id=PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "playlistId": "PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf", "title": "Playlist Title", "description": "Playlist description", "videoCount": 10, "videos": [ { "id": "video123", "title": "Video Title", "channel": { "name": "Channel Name" } } ], "pagination": { "hasMore": true } } ``` #### YouTube Related Videos - **Docs**: https://scrappa.co/docs/youtube-api/youtube_related - **Summary**: Get related videos - **Description**: Get videos related to a specific YouTube video. Returns up to 20 related videos by default. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `video_id` | string | Yes | YouTube video ID | | `limit` | integer | No | Number of videos (default: 20, max: 50) | **Example request:** ``` GET https://scrappa.co/api/youtube/related?video_id=dQw4w9WgXcQ Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "videoId": "dQw4w9WgXcQ", "count": 20, "videos": [ { "id": "yPYZpwSpKmA", "title": "Rick Astley - Together Forever (Official Video) [4K Remaster]", "thumbnail": "https://i.ytimg.com/vi/yPYZpwSpKmA/hqdefault.jpg", "duration": "3:24", "viewCount": "196M views", "publishedTime": "16 years ago", "channel": { "id": null, "name": "Rick Astley", "thumbnail": null, "verified": false }, "badges": [], "isLive": false } ] } ``` #### YouTube Search - **Docs**: https://scrappa.co/docs/youtube-api/youtube_search - **Summary**: Search YouTube videos - **Description**: Search for videos on YouTube with customizable result limits. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Search query | | `limit` | integer | No | Number of results (default: 10, max: 20) | | `page` | integer | No | Page number (default: 1, max: 10) | | `continuation` | string | No | Token for pagination from previous response | | `type` | string | No | Filter by content type: video, channel, playlist, movie, all (default: all). | | `hl` | string | No | Language code (e.g., en). | | `gl` | string | No | Country code (e.g., US). | | `order` | string | No | Sort order: date, rating, relevance, viewCount. | | `videoDuration` | string | No | Filter by duration: short, medium, long. | | `publishedAfter` | string | No | Return videos published after a date/time (best-effort; any valid date string, RFC3339 recommended). | | `publishedBefore` | string | No | Return videos published before a date/time (best-effort; any valid date string, RFC3339 recommended). | | `safeSearch` | string | No | Content filtering: moderate, none, strict. | **Example request:** ``` GET https://scrappa.co/api/youtube/search?query=programming+tutorial Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "results": [ { "type": "video", "id": "dQw4w9WgXcQ", "title": "Rick Astley - Never Gonna Give You Up (Official Video)", "description": "The official video for Never Gonna Give You Up by Rick Astley.", "thumbnail": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg", "duration": "3:33", "viewCount": "1.7B views", "publishedTime": "16 years ago", "channel": { "id": "UCuAXFkgsw1L7xaCfnd5JJOw", "name": "Rick Astley", "thumbnail": "https://yt3.ggpht.com/example.jpg", "verified": false, "isVerifiedArtist": true, "url": "https://www.youtube.com/@RickAstleyYT" }, "badges": [], "isLive": false, "isShort": false, "isPremium": false } ], "pagination": { "continuationToken": "eyJ...", "hasMore": true, "page": 1, "pageSize": 10 }, "query": "programming tutorial", "filters": { "type": "all", "sort": "relevance", "hl": "en", "gl": "US" } } ``` #### YouTube Suggestions - **Docs**: https://scrappa.co/docs/youtube-api/youtube_suggestions - **Summary**: Search autocomplete suggestions - **Description**: Get search autocomplete suggestions from YouTube. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Search query | | `hl` | string | No | Language code (e.g., en). | | `gl` | string | No | Country code (e.g., US). | **Example request:** ``` GET https://scrappa.co/api/youtube/suggestions?query=how+to Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "query": "how to", "locale": { "hl": "en", "gl": "US" }, "suggestions": [ "how to cook", "how to code", "how to draw", "how to make slime", "how to play guitar" ] } ``` #### YouTube Trending - **Docs**: https://scrappa.co/docs/youtube-api/youtube_trending - **Summary**: Get trending videos - **Description**: Get trending videos from YouTube by category and region. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `type` | string | No | Trending category: now, music, gaming, movies | | `gl` | string | No | Country code (e.g., US, DE) | | `hl` | string | No | Language code (e.g., en) | **Example request:** ``` GET https://scrappa.co/api/youtube/trending?type=music&gl=US Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "results": [ { "type": "video", "id": "dQw4w9WgXcQ", "title": "Rick Astley - Never Gonna Give You Up (Official Video)", "description": "The official video for Never Gonna Give You Up by Rick Astley.", "thumbnail": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg", "duration": "3:33", "viewCount": "1.7B views", "publishedTime": "16 years ago", "channel": { "id": "UCuAXFkgsw1L7xaCfnd5JJOw", "name": "Rick Astley", "thumbnail": "https://yt3.ggpht.com/example.jpg", "verified": false, "isVerifiedArtist": true, "url": "https://www.youtube.com/@RickAstleyYT" }, "badges": [ "New" ], "isLive": false, "isShort": false, "isPremium": false } ], "pagination": { "hasMore": true }, "filters": { "type": "music", "sort": "view_count", "hl": "en", "gl": "US" }, "type": "music", "source": "trending", "locale": { "hl": "en", "gl": "US" } } ``` #### YouTube Video Chapters - **Docs**: https://scrappa.co/docs/youtube-api/youtube_chapters - **Summary**: Get video chapters - **Description**: Get chapters/timestamps from a YouTube video. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `video_id` | string | Yes | YouTube video ID | **Example request:** ``` GET https://scrappa.co/api/youtube/chapters?video_id=dQw4w9WgXcQ Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "videoId": "dQw4w9WgXcQ", "hasChapters": true, "chapters": [ { "title": "Introduction", "startTime": 0, "startTimeMillis": 0, "thumbnail": "https://i.ytimg.com/..." } ] } ``` #### YouTube Video Info - **Docs**: https://scrappa.co/docs/youtube-api/youtube_video - **Summary**: Get full video details - **Description**: Get comprehensive video metadata from YouTube including views, likes, description, and channel info. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `video_id` | string | Yes | YouTube video ID (alias: videoId) | | `videoId` | string | Yes | YouTube video ID (alias: video_id) | **Example request:** ``` GET https://scrappa.co/api/youtube/video?video_id=dQw4w9WgXcQ Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "id": "dQw4w9WgXcQ", "videoId": "dQw4w9WgXcQ", "title": "Rick Astley - Never Gonna Give You Up (Official Video)", "description": "The official video for Never Gonna Give You Up by Rick Astley.", "thumbnail": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg", "duration": "3:33", "viewCount": "1,741,182,393 views", "shortViewCount": null, "likeCount": 18788542, "publishDate": "Oct 25, 2009", "uploadDate": "16 years ago", "channel": { "id": "UCuAXFkgsw1L7xaCfnd5JJOw", "name": "Rick Astley", "thumbnail": "https://yt3.ggpht.com/example.jpg", "url": "https://www.youtube.com/@RickAstleyYT", "subscriberCount": "4.45M subscribers", "isVerified": false, "isVerifiedArtist": true, "badges": [ { "type": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", "tooltip": "Official Artist Channel" } ] }, "hashtags": [ "#RickAstley", "#NeverGonnaGiveYouUp" ], "keywords": [ "rick astley", "Never Gonna Give You Up" ], "category": "Music", "isLiveContent": false, "isLive": false, "isUnlisted": false, "isFamilySafe": true, "isPremium": false, "isPrivate": false, "isAgeRestricted": false, "isCrawlable": true, "isUpcoming": false, "isPostLiveDvr": false, "isLiveDvrEnabled": false, "isLowLatencyLiveStream": false, "hasLivechat": false, "chapters": [], "captions": [ { "language": "en", "name": "English", "isAutoGenerated": false, "isTranslatable": true } ], "embed": { "iframeUrl": "https://www.youtube.com/embed/dQw4w9WgXcQ", "width": 1280, "height": 720, "isEmbeddable": true }, "relatedVideos": [ { "id": "yPYZpwSpKmA", "title": "Rick Astley - Together Forever", "thumbnail": "https://i.ytimg.com/vi/yPYZpwSpKmA/hqdefault.jpg", "duration": "3:24", "viewCount": "196M views", "publishedTime": "16 years ago", "channel": { "name": "Rick Astley", "verified": false }, "badges": [], "isLive": false } ], "storyboards": [ { "templateUrl": "https://i.ytimg.com/sb/dQw4w9WgXcQ/storyboard3_L0/default.jpg", "thumbnailWidth": 48, "thumbnailHeight": 27, "thumbnailCount": 100, "columns": 10, "rows": 10 } ], "regionInfo": { "availableCountries": null, "blockedCountries": null, "isPlayable": true, "status": "OK", "reason": null, "embeddable": true }, "comments": { "count": "1.2M comments", "teaser": "Great song!" }, "playabilityStatus": { "status": "OK", "reason": null, "embeddable": true, "audioOnlyPlayability": null }, "annotations": [ { "id": "5dad8f5d-0000-20c2-8451-883d24f8e7cc", "type": "PlayerAnnotationsExpanded", "allowSwipeDismiss": true, "featuredChannel": { "id": null, "name": null, "thumbnail": null } } ], "autoplay": { "countDownSecs": 5, "sets": 1 }, "cards": [ { "id": null, "title": "", "subtitle": "", "thumbnail": null, "url": null, "type": "Card", "endpoint": null } ], "endScreen": { "startMs": 201451, "elements": [ { "id": "720b1b77-5167-4d00-a42e-b8e715efaef1", "type": "EndscreenElement", "style": "CHANNEL", "title": "Rick Astley", "thumbnail": "https://yt3.ggpht.com/vewxKdtll-rntHAMDPY_Qa6hPac3-J2sCFFUwvGSSR0i7hB4g5rNfF39lCEcjGvsYI0RWx7V1A=s400-c-k-c0x00ffffff-no-rj", "endpoint": { "type": "NavigationEndpoint", "payload": { "browseId": "UCuAXFkgsw1L7xaCfnd5JJOw" } }, "metadata": { "text": "2026 UK & Ireland Reflection Tour\nTickets are on sale now.", "rtl": false } } ] }, "hasStreamingData": true, "license": null, "merchandise": null, "playerConfig": { "audioConfig": { "loudnessDb": 0.9899998, "perceptualLoudnessDb": -13.01, "enablePerFormatLoudness": true }, "maxBitrate": "0" }, "playerOverlays": { "endScreen": { "title": "You may also like...", "results": [ { "id": "yPYZpwSpKmA", "title": "Rick Astley - Together Forever (Official Video) [4K Remaster]", "thumbnail": "https://i.ytimg.com/vi/yPYZpwSpKmA/hqdefault.jpg", "endpoint": { "type": "NavigationEndpoint", "name": "watchEndpoint", "payload": { "videoId": "yPYZpwSpKmA", "playlistId": "RDyPYZpwSpKmA" }, "metadata": { "url": "/watch?v=yPYZpwSpKmA&list=RDyPYZpwSpKmA&start_radio=1", "page_type": "WEB_PAGE_TYPE_WATCH", "api_url": "/player" } } } ] }, "autoplay": { "title": "Up next", "videoId": "VegzlNRGSvI", "videoTitle": "Rick Astley megamix", "shortViewCount": "4.8M views", "published": "8 years ago", "countDownSecsForFullscreen": 3, "preferImmediateRedirect": false, "author": { "id": "UCQWt05fNgL1uCvufSqXG3OQ", "name": "Gary Douglas", "thumbnail": null } }, "shareButton": { "tooltip": "Share", "iconType": "SHARE", "isDisabled": false }, "decoratedPlayerBar": { "markersMap": [] } }, "streamingDataExpires": [], "topComments": false } ``` #### YouTube Video Transcript - **Docs**: https://scrappa.co/docs/youtube-api/youtube_transcript - **Summary**: Get transcript segments and full text - **Description**: Get the transcript for a YouTube video. Also available as /api/youtube/{videoId}/transcript and the matching legacy /api/youtube-external/* aliases. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `video_id` | string | Yes | YouTube video ID (aliases: videoId, id) | | `videoId` | string | Yes | YouTube video ID (aliases: video_id, id) | | `id` | string | Yes | YouTube video ID (aliases: video_id, videoId) | | `language` | string | No | Transcript language code or name (alias: lang). | | `lang` | string | No | Transcript language code or name (alias: language). | | `hl` | string | No | Language code for localized upstream video info lookups (e.g., en). | | `gl` | string | No | Country code for localized upstream video info lookups (e.g., US). | **Example request:** ``` GET https://scrappa.co/api/youtube/transcript?video_id=dQw4w9WgXcQ&language=es Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "videoId": "dQw4w9WgXcQ", "language": "es", "languageName": "Spanish", "sourceLanguage": "en", "sourceLanguageName": "English", "isAutoGenerated": true, "isTranslated": true, "availableLanguages": [ { "language": "en", "name": "English", "isAutoGenerated": true, "isTranslatable": true } ], "translationLanguages": [ { "language": "es", "name": "Spanish" } ], "transcript": [ { "text": "Hola mundo", "startMs": 1000, "durationMs": 2000, "endMs": 3000, "startTime": 1 } ], "text": "Hola mundo" } ``` ## Error Handling | HTTP Code | Meaning | |-----------|---------| | 200 | Success | | 400 | Bad request — invalid or missing parameters | | 401 | Unauthorized — invalid or missing API key | | 402 | Payment required — insufficient credits | | 404 | Not found — endpoint or resource not found | | 422 | Validation error — check parameter constraints | | 429 | Rate limited — too many requests | | 500 | Server error — retry or contact support | ## Resources - Quick Start: https://scrappa.co/docs - Authentication Guide: https://scrappa.co/docs/authentication - Error Handling: https://scrappa.co/docs/error-handling - API Playground: https://scrappa.co/docs/playground - OpenAPI Spec: https://scrappa.co/docs/api.json - Pricing: https://scrappa.co/pricing - MCP Integration: https://scrappa.co/docs/mcp-integration - Best MCP Servers for Web Scraping: https://scrappa.co/post/best-mcp-servers-web-scraping