# 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" ``` ### x402 (no account or API key) All paid API endpoints also accept x402 v2 upto payments in native USDC on Base (`eip155:8453`). - Price: $0.001 per successful request ($1.00 per 1,000) - Failed and explicitly non-billable requests are not charged - Discovery manifest: https://scrappa.co/.well-known/x402 - Human-readable x402 guide: https://scrappa.co/x402 - Call without `X-API-KEY` to receive `PAYMENT-REQUIRED`, then retry with `PAYMENT-SIGNATURE` ## 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 ### Apple App Store API Extract app, book, audiobook, movie, TV, music, and podcast data, reviews, search results, and charts from the Apple App Store. #### Apple App Store Apps Product - **Docs**: https://scrappa.co/docs/apple-app-store-api/apple_app_store_apps_product - **Summary**: Extract Apple App Store app product details, privacy labels, and embedded reviews. - **Description**: Apple App Store apps product endpoint: full app metadata, privacy nutrition labels, version history, rating histogram, similar apps, and first-page reviews. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `product_id` | string | Yes | Apple product id (numeric adam id, e.g. 284882215; UMC ids also accepted for movies/TV). | | `store` | string | No | Apple store vertical: apps, mac, books, audiobooks, movies, tv, music, or podcasts. | | `country` | string | No | Two-letter Apple storefront country code (e.g. us, gb, de). Defaults to us. | | `season_id` | string | No | TV season id; returns the season product instead of the show. | | `num` | integer | No | Requested review result count per page. | | `next_page_token` | string | No | Review pagination token from a previous response. | **Example request:** ``` GET https://scrappa.co/api/apple/app-store/apps/product?product_id=284882215 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "apple_app_store_details", "product_id": "284882215", "store": "apps", "country": "us" }, "product": { "id": "284882215", "store": "apps", "title": "Facebook", "artist": "Meta Platforms, Inc.", "rating": 2.3, "rating_count": 1300000, "content_rating": "12+" }, "ratings": { "rating_average": 2.3, "rating_count": 1300000, "histogram": { "1": 500000, "2": 100000, "3": 150000, "4": 200000, "5": 350000 } }, "reviews": [ { "id": "10086435917", "title": "Great app", "author": "reviewer", "rating": 5, "text": "Works well.", "date": "2026-06-01T00:00:00Z", "is_edited": false } ], "reviews_pagination": { "offset": 0, "limit": 20, "next_offset": 20, "next_page_token": "20", "end_of_history": false } } ``` #### Apple App Store Charts - **Docs**: https://scrappa.co/docs/apple-app-store-api/apple_app_store_charts - **Summary**: Extract Apple App Store top charts per vertical. - **Description**: Apple charts endpoint: top-free, top-paid, top-grossing, most-played, top-subscriber, and top-episodes charts across store verticals with optional genre filters. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `store` | string | No | Apple store vertical: apps, mac, books, audiobooks, movies, tv, music, or podcasts. | | `chart` | string | No | Chart type: top-free, top-paid, top-grossing, most-played, top-subscriber, or top-episodes. Music always serves the most-played albums chart; podcasts serve top shows (top-subscriber on request). The response echoes both the requested and the served chart type. | | `genre` | string | No | Genre filter for feeds that support it: an Apple genre id, passed through to Apple's charts feeds as-is (Apple publishes genre ids per storefront). | | `country` | string | No | Two-letter Apple storefront country code. Defaults to us. | | `limit` | integer | No | Maximum number of chart items. | **Example request:** ``` GET https://scrappa.co/api/apple/app-store/charts?store=apps&chart=top-free&country=us Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "apple_app_store_charts", "store": "apps", "chart": "top-free", "country": "us", "limit": 50 }, "chart": { "type": "top-free", "requested": "top-free", "items": [ { "position": 1, "id": "284882215", "title": "Facebook", "artist": "Meta Platforms, Inc.", "url": "https://apps.apple.com/us/app/facebook/id284882215" } ] } } ``` #### Apple App Store Details - **Docs**: https://scrappa.co/docs/apple-app-store-api/apple_app_store_details - **Summary**: Extract Apple App Store product details, ratings, privacy labels, version history, and reviews. - **Description**: Extract public Apple App Store product data across apps, Mac apps, books, audiobooks, movies, TV, music, and podcasts: metadata, ratings, privacy nutrition labels, version history, offers, and embedded reviews where Apple exposes them. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `product_id` | string | Yes | Apple product id (numeric adam id, e.g. 284882215; UMC ids also accepted for movies/TV). | | `store` | string | No | Apple store vertical: apps, mac, books, audiobooks, movies, tv, music, or podcasts. | | `country` | string | No | Two-letter Apple storefront country code (e.g. us, gb, de). Defaults to us. | | `season_id` | string | No | TV season id; returns the season product instead of the show. | | `num` | integer | No | Requested review result count per page. | | `next_page_token` | string | No | Review pagination token from a previous response. | **Example request:** ``` GET https://scrappa.co/api/apple/app-store/details?product_id=284882215&store=apps&country=us Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "apple_app_store_details", "product_id": "284882215", "store": "apps", "country": "us" }, "product": { "id": "284882215", "store": "apps", "title": "Facebook", "artist": "Meta Platforms, Inc.", "rating": 2.3, "rating_count": 1300000, "content_rating": "12+" }, "ratings": { "rating_average": 2.3, "rating_count": 1300000, "histogram": { "1": 500000, "2": 100000, "3": 150000, "4": 200000, "5": 350000 } }, "reviews": [ { "id": "10086435917", "title": "Great app", "author": "reviewer", "rating": 5, "text": "Works well.", "date": "2026-06-01T00:00:00Z", "is_edited": false } ], "reviews_pagination": { "offset": 0, "limit": 20, "next_offset": 20, "next_page_token": "20", "end_of_history": false } } ``` #### Apple App Store Developer - **Docs**: https://scrappa.co/docs/apple-app-store-api/apple_app_store_developer - **Summary**: Extract an Apple developer profile and their apps catalog. - **Description**: Apple developer endpoint: developer profile plus the full apps catalog for the given artist id. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `artist_id` | string | Yes | Apple artist/developer id (e.g. 284882218). | | `country` | string | No | Two-letter Apple storefront country code. Defaults to us. | **Example request:** ``` GET https://scrappa.co/api/apple/app-store/developer?artist_id=284882218&country=us Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "apple_app_store_developer", "artist_id": "284882218", "country": "us" }, "developer": { "id": "284882218", "name": "Meta Platforms, Inc.", "url": "https://apps.apple.com/us/developer/meta-platforms-inc/id284882218" }, "apps": [ { "id": "284882215", "title": "Facebook", "url": "https://apps.apple.com/us/app/facebook/id284882215" } ] } ``` #### Apple App Store Product - **Docs**: https://scrappa.co/docs/apple-app-store-api/apple_app_store_product - **Summary**: Extract Apple App Store product data across all store verticals. - **Description**: SerpApi-compatible Apple App Store product endpoint accepting product_id, store, country, season, and pagination parameters. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `product_id` | string | Yes | Apple product id (numeric adam id, e.g. 284882215; UMC ids also accepted for movies/TV). | | `store` | string | No | Apple store vertical: apps, mac, books, audiobooks, movies, tv, music, or podcasts. | | `country` | string | No | Two-letter Apple storefront country code (e.g. us, gb, de). Defaults to us. | | `season_id` | string | No | TV season id; returns the season product instead of the show. | | `num` | integer | No | Requested review result count per page. | | `next_page_token` | string | No | Review pagination token from a previous response. | **Example request:** ``` GET https://scrappa.co/api/apple/app-store/product?product_id=284882215&store=apps&country=us Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "apple_app_store_details", "product_id": "284882215", "store": "apps", "country": "us" }, "product": { "id": "284882215", "store": "apps", "title": "Facebook", "artist": "Meta Platforms, Inc.", "rating": 2.3, "rating_count": 1300000, "content_rating": "12+" }, "ratings": { "rating_average": 2.3, "rating_count": 1300000, "histogram": { "1": 500000, "2": 100000, "3": 150000, "4": 200000, "5": 350000 } }, "reviews": [ { "id": "10086435917", "title": "Great app", "author": "reviewer", "rating": 5, "text": "Works well.", "date": "2026-06-01T00:00:00Z", "is_edited": false } ], "reviews_pagination": { "offset": 0, "limit": 20, "next_offset": 20, "next_page_token": "20", "end_of_history": false } } ``` #### Apple App Store Product Reviews - **Docs**: https://scrappa.co/docs/apple-app-store-api/apple_app_store_product_reviews - **Summary**: Extract Apple App Store product reviews with offset pagination. - **Description**: Apple product reviews endpoint across verticals: app reviews, book reviews, podcast reviews, and the Rotten Tomatoes critics block for movies/TV. End of review history is a normal, successful completion (end_of_history=true). **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `product_id` | string | Yes | Apple product id (numeric adam id, e.g. 284882215; UMC ids also accepted for movies/TV). | | `store` | string | No | Apple store vertical: apps, mac, books, audiobooks, movies, tv, music, or podcasts. | | `country` | string | No | Two-letter Apple storefront country code (e.g. us, gb, de). Defaults to us. | | `season_id` | string | No | TV season id; returns the season product instead of the show. | | `num` | integer | No | Requested review result count per page. | | `next_page_token` | string | No | Review pagination token from a previous response. | **Example request:** ``` GET https://scrappa.co/api/apple/app-store/product/reviews?product_id=284882215&store=apps&num=20 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "apple_app_store_details", "product_id": "284882215", "store": "apps", "country": "us" }, "product": { "id": "284882215", "store": "apps", "title": "Facebook", "artist": "Meta Platforms, Inc.", "rating": 2.3, "rating_count": 1300000, "content_rating": "12+" }, "ratings": { "rating_average": 2.3, "rating_count": 1300000, "histogram": { "1": 500000, "2": 100000, "3": 150000, "4": 200000, "5": 350000 } }, "reviews": [ { "id": "10086435917", "title": "Great app", "author": "reviewer", "rating": 5, "text": "Works well.", "date": "2026-06-01T00:00:00Z", "is_edited": false } ], "reviews_pagination": { "offset": 0, "limit": 20, "next_offset": 20, "next_page_token": "20", "end_of_history": false } } ``` #### Apple App Store Search - **Docs**: https://scrappa.co/docs/apple-app-store-api/apple_app_store_search - **Summary**: Search the Apple App Store across apps, books, movies, TV, music, and podcasts. - **Description**: Apple search endpoint with per-vertical routing and storefront localization. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Search term (q is accepted as an alias). | | `store` | string | No | Apple store vertical: apps, mac, books, audiobooks, movies, tv, music, or podcasts. | | `country` | string | No | Two-letter Apple storefront country code. Defaults to us. | | `limit` | integer | No | Maximum number of results. | **Example request:** ``` GET https://scrappa.co/api/apple/app-store/search?query=facebook&store=apps&country=us Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "apple_app_store_search", "query": "facebook", "store": "apps", "country": "us", "limit": 50 }, "results": [ { "id": "284882215", "title": "Facebook", "artist": "Meta Platforms, Inc.", "url": "https://apps.apple.com/us/app/facebook/id284882215", "rating": 2.3 } ] } ``` #### Apple Audiobooks Product - **Docs**: https://scrappa.co/docs/apple-app-store-api/apple_app_store_audiobooks_product - **Summary**: Extract Apple Audiobooks product details. - **Description**: Apple Audiobooks product endpoint with metadata, pricing, and storefront localization. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `product_id` | string | Yes | Apple product id (numeric adam id, e.g. 284882215; UMC ids also accepted for movies/TV). | | `store` | string | No | Apple store vertical: apps, mac, books, audiobooks, movies, tv, music, or podcasts. | | `country` | string | No | Two-letter Apple storefront country code (e.g. us, gb, de). Defaults to us. | | `season_id` | string | No | TV season id; returns the season product instead of the show. | | `num` | integer | No | Requested review result count per page. | | `next_page_token` | string | No | Review pagination token from a previous response. | **Example request:** ``` GET https://scrappa.co/api/apple/app-store/audiobooks/product?product_id=1602694961&store=audiobooks Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "apple_app_store_details", "product_id": "284882215", "store": "apps", "country": "us" }, "product": { "id": "284882215", "store": "apps", "title": "Facebook", "artist": "Meta Platforms, Inc.", "rating": 2.3, "rating_count": 1300000, "content_rating": "12+" }, "ratings": { "rating_average": 2.3, "rating_count": 1300000, "histogram": { "1": 500000, "2": 100000, "3": 150000, "4": 200000, "5": 350000 } }, "reviews": [ { "id": "10086435917", "title": "Great app", "author": "reviewer", "rating": 5, "text": "Works well.", "date": "2026-06-01T00:00:00Z", "is_edited": false } ], "reviews_pagination": { "offset": 0, "limit": 20, "next_offset": 20, "next_page_token": "20", "end_of_history": false } } ``` #### Apple Books Product - **Docs**: https://scrappa.co/docs/apple-app-store-api/apple_app_store_books_product - **Summary**: Extract Apple Books product details, reviews, and related books. - **Description**: Apple Books product endpoint: metadata, user reviews, authors, genres, and customers-also-bought relations. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `product_id` | string | Yes | Apple product id (numeric adam id, e.g. 284882215; UMC ids also accepted for movies/TV). | | `store` | string | No | Apple store vertical: apps, mac, books, audiobooks, movies, tv, music, or podcasts. | | `country` | string | No | Two-letter Apple storefront country code (e.g. us, gb, de). Defaults to us. | | `season_id` | string | No | TV season id; returns the season product instead of the show. | | `num` | integer | No | Requested review result count per page. | | `next_page_token` | string | No | Review pagination token from a previous response. | **Example request:** ``` GET https://scrappa.co/api/apple/app-store/books/product?product_id=1602694961&store=books Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "apple_app_store_details", "product_id": "284882215", "store": "apps", "country": "us" }, "product": { "id": "284882215", "store": "apps", "title": "Facebook", "artist": "Meta Platforms, Inc.", "rating": 2.3, "rating_count": 1300000, "content_rating": "12+" }, "ratings": { "rating_average": 2.3, "rating_count": 1300000, "histogram": { "1": 500000, "2": 100000, "3": 150000, "4": 200000, "5": 350000 } }, "reviews": [ { "id": "10086435917", "title": "Great app", "author": "reviewer", "rating": 5, "text": "Works well.", "date": "2026-06-01T00:00:00Z", "is_edited": false } ], "reviews_pagination": { "offset": 0, "limit": 20, "next_offset": 20, "next_page_token": "20", "end_of_history": false } } ``` #### Apple Movies Product - **Docs**: https://scrappa.co/docs/apple-app-store-api/apple_app_store_movies_product - **Summary**: Extract Apple movie product details, offers, and Rotten Tomatoes critics data. - **Description**: Apple movies product endpoint: metadata, SD/HD/4K offers, cast, related content, and the Rotten Tomatoes critics block (Apple has no user reviews for movies). **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `product_id` | string | Yes | Apple product id (numeric adam id, e.g. 284882215; UMC ids also accepted for movies/TV). | | `store` | string | No | Apple store vertical: apps, mac, books, audiobooks, movies, tv, music, or podcasts. | | `country` | string | No | Two-letter Apple storefront country code (e.g. us, gb, de). Defaults to us. | | `season_id` | string | No | TV season id; returns the season product instead of the show. | | `num` | integer | No | Requested review result count per page. | | `next_page_token` | string | No | Review pagination token from a previous response. | **Example request:** ``` GET https://scrappa.co/api/apple/app-store/movies/product?product_id=1463723805&store=movies Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "apple_app_store_details", "product_id": "284882215", "store": "apps", "country": "us" }, "product": { "id": "284882215", "store": "apps", "title": "Facebook", "artist": "Meta Platforms, Inc.", "rating": 2.3, "rating_count": 1300000, "content_rating": "12+" }, "ratings": { "rating_average": 2.3, "rating_count": 1300000, "histogram": { "1": 500000, "2": 100000, "3": 150000, "4": 200000, "5": 350000 } }, "reviews": [ { "id": "10086435917", "title": "Great app", "author": "reviewer", "rating": 5, "text": "Works well.", "date": "2026-06-01T00:00:00Z", "is_edited": false } ], "reviews_pagination": { "offset": 0, "limit": 20, "next_offset": 20, "next_page_token": "20", "end_of_history": false } } ``` #### Apple Music Product - **Docs**: https://scrappa.co/docs/apple-app-store-api/apple_app_store_music_product - **Summary**: Extract Apple Music album product details. - **Description**: Apple Music album product endpoint: metadata, track counts, genres, and editorial notes. Apple exposes no public rating surface for music. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `product_id` | string | Yes | Apple product id (numeric adam id, e.g. 284882215; UMC ids also accepted for movies/TV). | | `store` | string | No | Apple store vertical: apps, mac, books, audiobooks, movies, tv, music, or podcasts. | | `country` | string | No | Two-letter Apple storefront country code (e.g. us, gb, de). Defaults to us. | | `season_id` | string | No | TV season id; returns the season product instead of the show. | | `num` | integer | No | Requested review result count per page. | | `next_page_token` | string | No | Review pagination token from a previous response. | **Example request:** ``` GET https://scrappa.co/api/apple/app-store/music/product?product_id=1440857781&store=music Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "apple_app_store_details", "product_id": "284882215", "store": "apps", "country": "us" }, "product": { "id": "284882215", "store": "apps", "title": "Facebook", "artist": "Meta Platforms, Inc.", "rating": 2.3, "rating_count": 1300000, "content_rating": "12+" }, "ratings": { "rating_average": 2.3, "rating_count": 1300000, "histogram": { "1": 500000, "2": 100000, "3": 150000, "4": 200000, "5": 350000 } }, "reviews": [ { "id": "10086435917", "title": "Great app", "author": "reviewer", "rating": 5, "text": "Works well.", "date": "2026-06-01T00:00:00Z", "is_edited": false } ], "reviews_pagination": { "offset": 0, "limit": 20, "next_offset": 20, "next_page_token": "20", "end_of_history": false } } ``` #### Apple Podcasts Product - **Docs**: https://scrappa.co/docs/apple-app-store-api/apple_app_store_podcasts_product - **Summary**: Extract Apple Podcasts show details and canonical episodes. - **Description**: Apple Podcasts product endpoint: show metadata plus canonical episodes resolved through the publisher RSS feed. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `product_id` | string | Yes | Apple product id (numeric adam id, e.g. 284882215; UMC ids also accepted for movies/TV). | | `store` | string | No | Apple store vertical: apps, mac, books, audiobooks, movies, tv, music, or podcasts. | | `country` | string | No | Two-letter Apple storefront country code (e.g. us, gb, de). Defaults to us. | | `season_id` | string | No | TV season id; returns the season product instead of the show. | | `num` | integer | No | Requested review result count per page. | | `next_page_token` | string | No | Review pagination token from a previous response. | **Example request:** ``` GET https://scrappa.co/api/apple/app-store/podcasts/product?product_id=1253186678&store=podcasts Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "apple_app_store_details", "product_id": "284882215", "store": "apps", "country": "us" }, "product": { "id": "284882215", "store": "apps", "title": "Facebook", "artist": "Meta Platforms, Inc.", "rating": 2.3, "rating_count": 1300000, "content_rating": "12+" }, "ratings": { "rating_average": 2.3, "rating_count": 1300000, "histogram": { "1": 500000, "2": 100000, "3": 150000, "4": 200000, "5": 350000 } }, "reviews": [ { "id": "10086435917", "title": "Great app", "author": "reviewer", "rating": 5, "text": "Works well.", "date": "2026-06-01T00:00:00Z", "is_edited": false } ], "reviews_pagination": { "offset": 0, "limit": 20, "next_offset": 20, "next_page_token": "20", "end_of_history": false } } ``` #### Apple TV Product - **Docs**: https://scrappa.co/docs/apple-app-store-api/apple_app_store_tv_product - **Summary**: Extract Apple TV show and season product details. - **Description**: Apple TV product endpoint: show metadata, seasons, episodes, cast, and related content. Pass season_id for season products. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `product_id` | string | Yes | Apple product id (numeric adam id, e.g. 284882215; UMC ids also accepted for movies/TV). | | `store` | string | No | Apple store vertical: apps, mac, books, audiobooks, movies, tv, music, or podcasts. | | `country` | string | No | Two-letter Apple storefront country code (e.g. us, gb, de). Defaults to us. | | `season_id` | string | No | TV season id; returns the season product instead of the show. | | `num` | integer | No | Requested review result count per page. | | `next_page_token` | string | No | Review pagination token from a previous response. | **Example request:** ``` GET https://scrappa.co/api/apple/app-store/tv/product?product_id=102865380&store=tv Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "apple_app_store_details", "product_id": "284882215", "store": "apps", "country": "us" }, "product": { "id": "284882215", "store": "apps", "title": "Facebook", "artist": "Meta Platforms, Inc.", "rating": 2.3, "rating_count": 1300000, "content_rating": "12+" }, "ratings": { "rating_average": 2.3, "rating_count": 1300000, "histogram": { "1": 500000, "2": 100000, "3": 150000, "4": 200000, "5": 350000 } }, "reviews": [ { "id": "10086435917", "title": "Great app", "author": "reviewer", "rating": 5, "text": "Works well.", "date": "2026-06-01T00:00:00Z", "is_edited": false } ], "reviews_pagination": { "offset": 0, "limit": 20, "next_offset": 20, "next_page_token": "20", "end_of_history": false } } ``` ### 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). Pages beyond the available results or upstream pagination limit return 422; narrow the search using location, employer, or publication date filters. | | `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 ``` ### Baidu API Baidu web search, discovery, image, developer, and language data in JSON #### Baidu Autocomplete - **Docs**: https://scrappa.co/docs/baidu-api/baidu_autocomplete - **Summary**: Get Baidu query suggestions. - **Description**: Returns Baidu autocomplete suggestions with clear query, value, type, and direct-result fields. Original Baidu fields remain on each suggestion and the full payload is in provider_response. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Partial search query. | **Example request:** ``` GET https://scrappa.co/api/baidu/autocomplete?query=artificial+intelligence Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "baidu_autocomplete", "query": "artificial int" }, "search_information": { "query_displayed": "artificial int", "suggestion_count": 1 }, "suggestions": [ { "position": 1, "query": "artificial intelligence tools", "value": "artificial intelligence tools", "type": "sug", "is_direct": false, "q": "artificial intelligence tools" } ], "provider_response": { "g": [] }, "response_time_ms": 400 } ``` #### Baidu Developer Search - **Docs**: https://scrappa.co/docs/baidu-api/baidu_developer_search - **Summary**: Search Baidu developer and technical content. - **Description**: Returns technical search data from Baidu Kaifa with documents unwrapped into developer_results. Embedded synonyms, sitelinks, and attributes are parsed into arrays; the complete upstream structure remains in results and provider_response. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Search query. | | `page` | integer | No | Page number from 1 to 50. Default: 1. | | `limit` | integer | No | Results requested per page from 1 to 50. Default: 10. | **Example request:** ``` GET https://scrappa.co/api/baidu/developer-search?query=Laravel+API&page=1&limit=10 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "baidu_developer_search", "query": "Laravel API", "page": "1", "limit": "10" }, "developer_results": [ { "position": 1, "title": "Laravel Routing", "link": "https://laravel.com/docs/routing", "snippet": "Routing APIs and examples.", "site": "Laravel", "resource_type": "documentation", "synonyms": [ "routes", "router" ], "sitelinks": [ { "title": "Controllers", "link": "https://laravel.com/docs/controllers" } ], "attributes": [ { "name": "Language", "value": "PHP" } ] } ], "search_information": { "query_displayed": "Laravel API", "total_results": 42, "results_on_page": 10, "page": 1, "limit": 10 }, "pagination": { "page": 1, "limit": 10, "results_on_page": 10, "total_results": 42, "has_more": true, "next_page": 2 }, "results": { "documents": [] }, "provider_response": { "status": "OK", "data": [] }, "response_time_ms": 700 } ``` #### Baidu Images - **Docs**: https://scrappa.co/docs/baidu-api/baidu_images - **Summary**: Search Baidu Images in JSON. - **Description**: Returns image results with decoded original and source URLs, dimensions, file type, source, thumbnails, and pagination. Raw Baidu fields remain in images and the complete payload is in provider_response. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Search query. | | `page` | integer | No | Page number from 1 to 50. Default: 1. | | `limit` | integer | No | Results requested per page from 1 to 50. Default: 10. | **Example request:** ``` GET https://scrappa.co/api/baidu/images?query=Shanghai+skyline&page=1&limit=10 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "baidu_images", "query": "Shanghai skyline", "page": "1", "limit": "10" }, "images_results": [ { "position": 1, "title": "Shanghai skyline", "link": "https://example.com/shanghai", "original": "https://images.example.com/shanghai.jpg", "thumbnail": "https://images.example.com/shanghai-thumb.jpg", "source": "Example Images", "source_domain": "example.com", "original_width": 1920, "original_height": 1080, "file_type": "jpg", "is_gif": false } ], "search_information": { "query_displayed": "Shanghai skyline", "total_results": 1000, "results_on_page": 10, "page": 1, "limit": 10 }, "pagination": { "page": 1, "limit": 10, "results_on_page": 10, "total_results": 1000, "has_more": true, "next_page": 2 }, "images": [ { "thumbURL": "https://images.example.com/shanghai-thumb.jpg", "fromPageTitle": "Shanghai skyline", "width": 1920, "height": 1080 } ], "provider_response": { "data": [] }, "response_time_ms": 900 } ``` #### Baidu Search - **Docs**: https://scrappa.co/docs/baidu-api/baidu_search - **Summary**: Search Baidu News and receive JSON results. - **Description**: Returns Baidu News results with decoded URLs and text. When Baidu returns JSON, provider_response is unchanged. When results are extracted from HTML, provider_response.format is adapted_news_html and provider_response.feed is a compatibility representation, not an untouched provider payload. results always contains the same entries as provider_response.feed.entry. Entries retain title, url, urlEnc, source, category, abs, imgUrl, time and pn; raw_result additionally preserves the extracted source record. For adapted entries, pn is the one-based position across pages, urlEnc is the encoded URL, and category describes the news search query. time is null when no exact publication timestamp is available; date may contain Baidu's relative publication text. Feed metadata retains requestUrl (the fetched URL), category, resultnum (the returned entry count as a string), and all (null when the total is unknown, or "0" for an explicit no-result page). No timestamps or total counts are guessed. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Search query. | | `page` | integer | No | Page number from 1 to 50. Default: 1. | | `limit` | integer | No | Results requested per page from 1 to 50. Default: 10. | **Example request:** ``` GET https://scrappa.co/api/baidu/search?query=artificial+intelligence&page=1&limit=10 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "baidu_search", "query": "artificial intelligence", "page": "1", "limit": "10" }, "organic_results": [ { "position": 1, "result_type": "organic", "title": "Artificial Intelligence Research", "title_highlighted_words": [], "link": "https://example.com/ai", "displayed_link": "example.com", "snippet": "The latest artificial intelligence research.", "snippet_highlighted_words": [], "source": "Example News", "category": "artificial intelligence", "category_label": "\u767e\u5ea6\u65b0\u95fb\u641c\u7d22", "date": "6\u5929\u524d", "timestamp": null, "thumbnail": "https://example.com/ai.jpg" } ], "special_results": [], "search_information": { "requestUrl": "https://www.baidu.com/s?word=artificial%20intelligence&rn=10&pn=0&tn=news&rtt=1&ie=utf-8", "category": { "label": "\u767e\u5ea6\u65b0\u95fb\u641c\u7d22", "value": "artificial intelligence" }, "all": null, "resultnum": "1", "source": "baidu_news", "query_displayed": "artificial intelligence", "total_results": null, "total_results_is_estimate": false, "results_on_page": 1, "organic_results_on_page": 1, "upstream_result_count": 1, "page": 1, "limit": 10 }, "pagination": { "page": 1, "limit": 10, "results_on_page": 1, "total_results": null, "has_more": false, "next_page": null }, "results": [ { "title": "Artificial Intelligence Research", "url": "https://example.com/ai", "urlEnc": "https%3A%2F%2Fexample.com%2Fai", "source": "Example News", "category": { "label": "\u767e\u5ea6\u65b0\u95fb\u641c\u7d22", "value": "artificial intelligence" }, "abs": "The latest artificial intelligence research.", "imgUrl": "https://example.com/ai.jpg", "time": null, "pn": 1, "date": "6\u5929\u524d", "raw_result": { "title": "Artificial Intelligence Research", "titleUrl": "https://example.com/ai", "summary": "The latest artificial intelligence research.", "sourceName": "Example News", "leftImgSrc": "https://example.com/ai.jpg", "dispTime": "6\u5929\u524d" } } ], "provider_response": { "format": "adapted_news_html", "feed": { "requestUrl": "https://www.baidu.com/s?word=artificial%20intelligence&rn=10&pn=0&tn=news&rtt=1&ie=utf-8", "category": { "label": "\u767e\u5ea6\u65b0\u95fb\u641c\u7d22", "value": "artificial intelligence" }, "all": null, "resultnum": "1", "entry": [ { "title": "Artificial Intelligence Research", "url": "https://example.com/ai", "urlEnc": "https%3A%2F%2Fexample.com%2Fai", "source": "Example News", "category": { "label": "\u767e\u5ea6\u65b0\u95fb\u641c\u7d22", "value": "artificial intelligence" }, "abs": "The latest artificial intelligence research.", "imgUrl": "https://example.com/ai.jpg", "time": null, "pn": 1, "date": "6\u5929\u524d", "raw_result": { "title": "Artificial Intelligence Research", "titleUrl": "https://example.com/ai", "summary": "The latest artificial intelligence research.", "sourceName": "Example News", "leftImgSrc": "https://example.com/ai.jpg", "dispTime": "6\u5929\u524d" } } ] } }, "response_time_ms": 1200 } ``` #### Baidu Translation Suggestions - **Docs**: https://scrappa.co/docs/baidu-api/baidu_translation_suggestions - **Summary**: Get Baidu translation dictionary suggestions. - **Description**: Returns dictionary and translation suggestions from Baidu Translate with explicit query and translation fields. Original k and v fields are retained for compatibility. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Word or phrase to look up. | **Example request:** ``` GET https://scrappa.co/api/baidu/translation-suggestions?query=hello Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "baidu_translation_suggestions", "query": "hello" }, "search_information": { "query_displayed": "hello", "suggestion_count": 1 }, "suggestions": [ { "position": 1, "query": "hello", "translation": "\u4f60\u597d", "k": "hello", "v": "\u4f60\u597d" } ], "provider_response": { "errno": 0, "data": [] }, "response_time_ms": 400 } ``` #### Baidu Trending - **Docs**: https://scrappa.co/docs/baidu-api/baidu_trending - **Summary**: Get Baidu trending rankings. - **Description**: Returns Baidu ranking boards for real-time topics, novels, movies, television, or cars. The selected board is flattened into consistent trending_searches records while the complete nested board remains in trending and provider_response. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `tab` | string | No | One of realtime, novel, movie, teleplay, or car. Default: realtime. | **Example request:** ``` GET https://scrappa.co/api/baidu/trending?tab=realtime Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "baidu_trending", "tab": "realtime" }, "trending_searches": [ { "position": 1, "query": "Example topic", "title": "Example topic", "link": "https://www.baidu.com/s?wd=Example", "is_top": true, "hot_label": "\u70ed" } ], "available_tabs": [ { "tab": "realtime", "title": "\u5b9e\u65f6" }, { "tab": "movie", "title": "\u7535\u5f71" } ], "search_information": { "tab": "realtime", "board_title": "\u5b9e\u65f6\u70ed\u641c", "item_count": 1 }, "trending": { "cards": [] }, "provider_response": { "success": true, "data": [] }, "response_time_ms": 500 } ``` ### Billiger.de API Search Billiger.de, fetch rich product data, enumerate current offers, and inspect merchants as structured JSON. #### Billiger.de Offers API Documentation - **Docs**: https://scrappa.co/docs/billiger-api/billiger_offers - **Summary**: Get current Billiger.de offers for a product - **Description**: Fetch current offers with prices, shipping, availability, condition, and merchant data. Use page/page_size for one page or all=true to exhaust the upstream offer total. Exhaustion is all-or-nothing: incomplete traversal returns a non-billable failure. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `product_id` | integer | Yes | Canonical Billiger product identifier. | | `page` | integer | No | 1-based page number. Defaults to 1. | | `page_size` | integer | No | Offers per page. Defaults to 20, maximum 50. | | `all` | boolean | No | Set true to exhaust every expected offer page. | | `sort` | string | No | relevance, price, total_price, shop_userreview_rating, shop_userreview_count, or shop_rating alias. | | `direction` | string | No | Sort direction: asc or desc. | | `group_by_shop` | boolean | No | Must remain false so offer pagination stays item-level and exhaustive. | | `offer_conditions` | string | No | Numeric condition IDs such as 1 or 1,2,3. | **Example request:** ``` GET https://scrappa.co/api/billiger/offers?product_id=5048620687&all=1&sort=total_price Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "total_hits": 25, "hits": [] }, "meta": { "pagination": { "total": 25, "exhausted": true } } } ``` #### Billiger.de Product API Documentation - **Docs**: https://scrappa.co/docs/billiger-api/billiger_product - **Summary**: Get rich Billiger.de product details - **Description**: Fetch a product by canonical product ID, including media, specifications, variants, offer summaries, reviews, test reports, related products, and price history when Billiger provides them. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `product_id` | integer | Yes | Canonical Billiger product identifier from search or a product group. | **Example request:** ``` GET https://scrappa.co/api/billiger/product?product_id=5048620687 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "product_id": 5048620687, "properties": [], "pricehistory": [] } } ``` #### Billiger.de Product Group API Documentation - **Docs**: https://scrappa.co/docs/billiger-api/billiger_baseproduct - **Summary**: Get rich Billiger.de product-group details - **Description**: Fetch a product group by canonical baseproduct ID, including variants, current offer summaries, images, properties, differentiators, ratings, reviews, and price history when Billiger provides them. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `baseproduct_id` | integer | Yes | Canonical Billiger baseproduct identifier from search. | **Example request:** ``` GET https://scrappa.co/api/billiger/baseproduct?baseproduct_id=108608 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "baseproduct_id": 108608, "products": [], "pricehistory": [] } } ``` #### Billiger.de Search API Documentation - **Docs**: https://scrappa.co/docs/billiger-api/billiger_search - **Summary**: Search Billiger.de products with pagination, sorting, and facets - **Description**: Search Billiger.de by keyword. Results include canonical Billiger identifiers, typed hits, pagination metadata, spelling metadata, and facets with their current values and counts. Apply returned facets with filters[key]=value. External identifier lookup is not supported. Page size limits hits, not facet values: broad queries can return multi-megabyte responses even with page_size=10. Responses that cannot be safely processed fail without charging credits; successful searches preserve all returned hits and facets. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Search text. Alias: q. | | `page` | integer | No | 1-based page number. Defaults to 1. | | `page_size` | integer | No | Results per page. Defaults to 20, maximum 50. | | `sort` | string | No | relevance, clickout_relevance, price, price_rev, rating, or disjunctive. | | `cat` | integer | No | Billiger category ID. | | `doctype` | string | No | auto, offer, product, or product_offer. | | `filters` | array | No | Associative facet values returned by a previous search, for example filters[brand]=2220. | | `fuzzy` | boolean | No | Enable fuzzy matching. | **Example request:** ``` GET https://scrappa.co/api/billiger/search?query=iphone&page=1&page_size=20&sort=relevance Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "total_hits": 100, "hits": [], "filters": [] }, "meta": { "pagination": { "page": 1, "page_size": 20, "total": 100, "total_pages": 5, "has_more": true } } } ``` #### Billiger.de Shop API Documentation - **Docs**: https://scrappa.co/docs/billiger-api/billiger_shop - **Summary**: Get Billiger.de merchant details - **Description**: Fetch merchant identity, company and support information, returns, payment and shipping methods, certificates, and rating aggregates by canonical Billiger shop ID. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `shop_id` | integer | Yes | Canonical Billiger shop identifier from an offer. | **Example request:** ``` GET https://scrappa.co/api/billiger/shop?shop_id=10992 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "shop_id": 10992, "name": "Example Shop" } } ``` ### Bing Search API Bing web search results in structured JSON #### Bing Search API - **Docs**: https://scrappa.co/docs/bing-search-api/bing_search - **Description**:

Bing Search API documentation for developers who need Bing web results in JSON. Scrappa's GET /api/bing/search endpoint returns organic Bing results with positions, titles, descriptions, URLs, domains, related searches, and question suggestions.

Bing Search API for web results

Use this endpoint for SERP monitoring, alternative search coverage, market research, citation discovery, and products that need Microsoft Bing result data without maintaining their own proxy-backed scraper.

How to call the Bing Search API

Send a GET request to /api/bing/search with a required query parameter and your Scrappa API key in the x-api-key header. The q alias is also accepted for compatibility, but new integrations should use query. Optional parameters include page, num, site, filetype, safe, hl, and include_html.

Response fields

The response includes data results with position, title, description, url, and domain, plus people_also_search_for, people_also_ask, results_on_page, and source. results_on_page describes the current response page.

**Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes |

The Bing search query string. Use this parameter for new integrations.

Example: web scraping tools

| | `q` | string | No |

Alias for query. Prefer query for new integrations.

| | `page` | string | No |

Result page number.

Range: 1-50

Default: 1

| | `num` | string | No |

Number of results requested from Bing.

Range: 1-50

Default: 10

| | `site` | string | No |

Restrict results to a domain by adding a Bing site: operator.

Example: example.com

| | `filetype` | string | No |

Restrict results to a file extension by adding a Bing filetype: operator.

Example: pdf

| | `safe` | string | No |

Safe search setting.

Values: off, moderate, strict

Default: moderate

| | `hl` | string | No |

Language/locale hint passed to Bing as setlang.

Default: en-US

| | `include_html` | string | No |

Include the raw Bing HTML in the JSON response for diagnostics.

Default: false

| **Example response (truncated):** ```json { "data": [ { "url": "https://example.com/web-scraping-tools", "title": "Web Scraping Tools - Example Guide", "domain": "example.com", "position": 1, "description": "A practical overview of web scraping tools, proxy routing, parsers, and data extraction workflows." }, { "url": "https://example.org/data-extraction-platforms", "title": "Best Data Extraction Platforms", "domain": "example.org", "position": 2, "description": "Compare APIs and scraping platforms for search, ecommerce, jobs, reviews, and business data." } ], "source": "bing", "twitter_card": null, "knowledge_graph": null, "people_also_ask": [ { "question": "What are web scraping tools used for?" } ], "results_on_page": 2, "see_results_about": null, "people_also_search_for": [ { "query": "web scraping software" } ] } ``` ### Booking.com API Hotel data extracted from public Booking.com pages — search results, property details, destination resolution, visible prices, rooms, photos, facilities, review score fields, and review records. #### 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. | | `checkin` | string | No | Check-in date (YYYY-MM-DD). | | `checkout` | string | No | Check-out date (YYYY-MM-DD). Must be after checkin. | | `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 | Language code for the response (e.g. en-us, de). | | `currency` | string | No | Three-letter currency code (e.g. EUR, USD). | **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. | | `checkin` | string | No | Check-in date (YYYY-MM-DD). | | `checkout` | string | No | Check-out date (YYYY-MM-DD). Must be after checkin. | | `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 | Language code for the response (e.g. en-us, de). | | `currency` | string | No | Three-letter currency code (e.g. EUR, USD). | **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. | | `checkin` | string | No | Check-in date (YYYY-MM-DD). | | `checkout` | string | No | Check-out date (YYYY-MM-DD). Must be after checkin. | | `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 | Language code for the response (e.g. en-us, de). | | `currency` | string | No | Three-letter currency code (e.g. EUR, USD). | **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 Reviews - **Docs**: https://scrappa.co/docs/booking-api/booking_reviews - **Summary**: Extract public guest review records from a Booking.com hotel - **Description**: Returns paginated public review records exposed through Booking.com review pages. Pass either a full Booking.com hotel URL via "url", or a country + slug pair. **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. | | `page` | integer | No | Review page number, 1-100. Defaults to 1. | | `limit` | integer | No | Reviews per page, 1-25. Defaults to 10. | | `sort` | string | No | Sort order: recent_desc, recent_asc, score_desc, or score_asc. Defaults to recent_desc. | | `lang` | string | No | Review 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/reviews?country=fr&slug=muguet&page=1&limit=10&sort=recent_desc&lang=en-us Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "data": { "reviews": [], "pagination": [] } } ``` #### 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": [] } } ``` ### Brave Search API Brave web search results scraped from search.brave.com #### Brave Search API - **Docs**: https://scrappa.co/docs/brave-search-api/brave_search - **Description**:

Brave Search API documentation for developers who need Brave web results in JSON. Scrappa's GET /api/brave/search endpoint scrapes search.brave.com HTML through an approved proxy layer and returns organic results, related searches, and related questions.

Brave Search API for web results

Use this endpoint when you want independent Brave Search coverage instead of Google results. It is a proxy-backed HTML scrape of Brave Search, not the official Brave Search API and not a Google Search alias.

How to call the Brave Search API

Send a GET request to /api/brave/search with a required query parameter and your Scrappa API key in the x-api-key header. The q alias is also accepted. Optional parameters include language, page, and include_html.

Response fields

The response includes organic_results with position, title, link, snippet, and source, plus related_searches, related_questions, results_count, and a top-level source of brave.

**Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes |

The Brave search query string. Use this parameter for new integrations.

Example: privacy tools

| | `q` | string | No |

Alias for query. Prefer query for new integrations.

| | `language` | string | No |

Language filter for Brave results. Accepts named values or ISO 639-1 codes.

Values: english, deutsch, french, spanish, italian, portuguese, dutch, russian, chinese, japanese, arabic, all, or en, de, fr, es, it, pt, nl, ru, zh, ja, ar

Default: all

| | `page` | string | No |

Result page number.

Range: 1-10

Default: 1

| | `include_html` | string | No |

Include the raw Brave Search HTML in the JSON response for diagnostics.

Default: false

| **Example response (truncated):** ```json { "source": "brave", "engine_used": "brave", "results_count": 2, "organic_results": [ { "link": "https://example.com/privacy-tools", "title": "Privacy Tools", "source": "example.com", "snippet": "A list of privacy tools and private search engines.", "position": 1, "redirect_link": "https://example.com/privacy-tools", "displayed_link": "example.com" }, { "link": "https://example.org/private-search", "title": "Private Search Engines", "source": "example.org", "snippet": "Compare independent search engines that do not track users.", "position": 2, "redirect_link": "https://example.org/private-search", "displayed_link": "example.org" } ], "related_searches": [ { "link": "https://search.brave.com/search?q=private+search+engines", "query": "private search engines" } ], "related_questions": [ { "question": "What are privacy tools?" } ], "search_information": { "query_displayed": "privacy tools" } } ``` ### 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": [] } ``` ### EconomyCarRentals API Resolve location text into airports, offices, railway stations, hotels, and opaque selection identifiers. #### EconomyCarRentals Location Autocomplete - **Docs**: https://scrappa.co/docs/economy-car-rentals-api/economy_car_rentals_autocomplete - **Summary**: Resolve text into EconomyCarRentals location groups - **Description**: Find rental-car pickup locations by text. Responses group airports, offices, railway stations, and hotels when available, and include country metadata plus opaque hierarchy and selection keys. A confirmed no-match returns empty groups and is not billed. This endpoint does not provide live availability, vehicles, prices, supplier terms, or booking. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Unicode location text containing 3 to 120 characters. | | `limit` | integer | No | Maximum upstream matches to consider. Defaults to 200; allowed range is 1 to 200. | | `language_id` | string | No | Response language identifier. Version 1 supports 01 only. | **Example request:** ``` GET https://scrappa.co/api/economy-car-rentals/autocomplete?query=LHR&limit=10&language_id=01 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "economy_car_rentals_autocomplete", "query": "LHR", "limit": 10, "language_id": "01" }, "groups": [ { "type": "AIRPORT", "label": "Airport location", "icon": "fa-plane", "locations": [ { "name": "London Heathrow Heathrow Airport (LHR)", "country_code": "GB", "country_name": "United Kingdom", "country_id": 25, "hierarchy_key": "35;560;1956", "selection_key": "1956;4633" } ] } ], "related_searches": [], "related_searches_label": "Related searches", "meta": { "endpoint_family": "autocomplete", "proxy_tier": "mobile-proxies", "attempts": 1, "duration_ms": 518 } } ``` ### Geizhals API Search Geizhals products, fetch rich product details with offers and reviews, and read historical price data as structured JSON. #### Geizhals Price History API Documentation - **Docs**: https://scrappa.co/docs/geizhals-api/geizhals_price_history - **Summary**: Get Geizhals price history for a known product id - **Description**: Scrappa's `GET /api/geizhals/price-history` endpoint returns historical price data for a known Geizhals product id as structured JSON. Use a product id from a Geizhals product URL such as `...-a2194110.html`, then request a history window with `days` and a market with `loc`. This endpoint is scoped to price history only. It does not search Geizhals, discover product ids, fetch current offer rows, merchants, categories, specs, or reviews. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `product_id` | integer | Yes | Known Geizhals product id from product URLs such as ...-a2194110.html. | | `days` | integer | No | History window in days. Defaults to 31. Maximum 3650. | | `loc` | string | No | Market code: de, at, eu, pl, or uk. Defaults to de. | **Example request:** ``` GET https://scrappa.co/api/geizhals/price-history?product_id=2194110&days=31&loc=de Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "product_id": 2194110, "loc": "de", "days": 31, "current_best": 49.9, "min": 31.43, "max": 129, "first_timestamp": 1575849600, "last_timestamp": 1784419199, "last_formatted": "18.07.2026", "history": [ { "timestamp_ms": 1781654400000, "timestamp": 1781654400, "price": 49.9, "marker": 1 } ], "meta": { "duration_ms": 543, "history_count": 1 } } ``` #### Geizhals Product Details API Documentation - **Docs**: https://scrappa.co/docs/geizhals-api/geizhals_product - **Summary**: Get rich Geizhals product details by product id - **Description**: Scrappa's `GET /api/geizhals/product` endpoint returns rich details for a known Geizhals product id as structured JSON, including merchant offers, availability, specifications, images, test reviews, and price aggregates. Use a product id from a Geizhals product URL such as `...-a2194110.html`, or a `gzhid` from `GET /api/geizhals/search`. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `product_id` | integer | Yes | Known Geizhals product id from product URLs such as ...-a2194110.html or a search gzhid. | | `loc` | string | No | Market code: de, at, eu, pl, or uk. Defaults to de. | | `lang` | string | No | Response language: de or en. Defaults to de. | | `offers` | integer | No | Maximum number of merchant offers to include (1-100). Defaults to 20. | | `merchant_details` | boolean | No | Include merchant/shop details on offers. Defaults to true. | | `reviews` | boolean | No | Include test reviews and review details. Defaults to true. | | `videos` | boolean | No | Include product videos. Defaults to true. | **Example request:** ``` GET https://scrappa.co/api/geizhals/product?product_id=2194110&loc=de&offers=20 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "product_id": 2194110, "loc": "de", "lang": "de", "product": { "product": "Samsung 970 Evo Plus 1TB", "manufacturer_name": "Samsung", "offer_count": 34, "prices": { "best": 71.9, "avg": 84.2 }, "offers": [ { "shop": "ExampleShop", "price": 71.9, "avl": "available" } ], "images": [ "https://gzhls.at/i/00/00/2194110-n0.jpg" ], "urls": { "overview": "https://geizhals.de/a2194110.html" }, "test_reviews": [] }, "meta": { "duration_ms": 731, "attempts": 1 } } ``` #### Geizhals Product Search API Documentation - **Docs**: https://scrappa.co/docs/geizhals-api/geizhals_search - **Summary**: Search Geizhals products by keyword - **Description**: Scrappa's `GET /api/geizhals/search` endpoint searches the Geizhals product catalog by keyword and returns structured JSON with matching products, best prices, ratings, category and manufacturer facets, and pagination. Use the returned product `gzhid` with `GET /api/geizhals/product` to fetch full product details. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Search keyword, e.g. thinkpad. | | `loc` | string | No | Market code: de, at, eu, pl, or uk. Defaults to de. | | `lang` | string | No | Response language: de or en. Defaults to de. | | `page` | integer | No | 1-based page number. Defaults to 1. | | `pagesize` | integer | No | Results per page, between 1 and 1000. Defaults to 10. | | `sort` | string | No | Optional sort key as used by Geizhals (e.g. price). Defaults to relevance. | | `category` | string | No | Optional Geizhals category id to constrain results. | | `manufacturer` | string | No | Optional manufacturer id to constrain results. | **Example request:** ``` GET https://scrappa.co/api/geizhals/search?query=thinkpad&loc=de&pagesize=10 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "query": "thinkpad", "loc": "de", "lang": "de", "page": 1, "pagesize": 10, "total": 431, "products": [ { "gzhid": 3552190, "product": "Lenovo ThinkPad E14 G7", "manufacturer_name": "Lenovo", "offer_count": 12, "best_price": { "value": 899, "currency": "EUR" }, "urls": { "overview": "https://geizhals.de/a3552190.html" } } ], "facets": { "price_range": { "min": 199, "max": 3499 }, "categories": [ { "id": "nb", "name": "Notebooks", "count": 380 } ], "manufacturer": [ { "id": "1234", "name": "Lenovo", "count": 210 } ] }, "category_suggestions": [], "pager": { "first_page": 1, "next_page": 2, "last_page": 44 }, "meta": { "duration_ms": 812, "attempts": 1 } } ``` ### 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 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 } } ``` #### Google Finance Historical Data API - **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 daily, weekly, or monthly intervals. Use [Search Financial Instruments](/docs/google-finance-api/google_finance_search) to resolve a symbol and exchange, pair this with the [Google Finance quote API](/docs/google-finance-api/google_finance_quote) for current ticker details, or use [Intraday Graph Data](/docs/google-finance-api/google_finance_intraday) for minute-level charts. **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 } ] } ``` #### 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, up to 4096 characters | | `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) | | `currency` | string | No | Currency code for prices and fare options (e.g., USD, EUR, GBP) | **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**: Version 2 searches only from_date per request and returns its cheapest outbound starting price and departure_token. Use search_metadata.next_departure_date as from_date on a separate paid call to continue through to_date. Each call completes one upstream lookup, retrying temporary failures of that same lookup; failures are not billed. **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) | | `outbound_times` | string | No | Outbound time window as comma-separated hours, e.g. "6,18" for departures between 06:00 and 18:00. Two further values narrow the arrival window. | | `bags` | integer | No | Carry-on bag count. Only 0 is currently supported. | **Example request:** ``` GET https://scrappa.co/api/flights/v2/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) | | `currency` | string | No | Currency code for prices (e.g., USD, EUR, GBP) | | `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. | | `outbound_times` | string | No | Outbound time window as comma-separated hours, e.g. "6,18" for departures between 06:00 and 18:00. Two further values narrow the arrival window. | | `bags` | integer | No | Carry-on bag count. Only 0 is currently supported. | **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**: Version 2 uses two separately billed requests. First request returns outbound options with price_type=round_trip_starting, itinerary_complete=false, and departure_token. Repeat the same search parameters with one departure_token to get compatible return_legs and price_type=round_trip_total for that exact outbound. Each call completes one upstream lookup, retrying temporary failures of that same lookup; failed calls are not billed. No automatic return or baggage expansion. **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 | | `departure_token` | string | No | Copy one token from the outbound response and repeat the same search parameters to request its matching returns. Maximum 16384 characters. | | `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) | | `currency` | string | No | Currency code for prices (e.g., USD, EUR, GBP) | | `airlines` | array | No | Filter by airline IATA codes (e.g., ["AA", "UA", "DL"] or "AA,UA,DL") | | `include_baggage` | boolean | No | Only false/0 is supported. No additional baggage lookup is performed. | | `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. | | `bags` | integer | No | Carry-on bag count. Only 0 is currently supported. | **Example request:** ``` GET https://scrappa.co/api/flights/v2/round-trip?origin=TIA&destination=FCO&departure_date=2026-10-08&return_date=2026-10-15&adults=1¤cy=EUR Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "flights": [ { "trip_type": "round_trip", "itinerary_complete": false, "price_type": "round_trip_starting", "departure_token": "COPY_TOKEN_FROM_LIVE_OUTBOUND_RESPONSE", "booking_token": null, "price": 47, "currency": "EUR", "stops": null, "outbound_stops": 0, "return_stops": null, "total_duration_minutes": null, "outbound_duration_minutes": 100, "return_duration_minutes": null, "outbound_legs": [ { "departure_airport": "TIA", "arrival_airport": "FCO", "departure_time": "2026-10-08T06:00:00", "arrival_time": "2026-10-08T07:40:00", "airline": "W4", "flight_number": "5011", "duration_minutes": 100 } ], "legs": [ { "departure_airport": "TIA", "arrival_airport": "FCO", "departure_time": "2026-10-08T06:00:00", "arrival_time": "2026-10-08T07:40:00", "airline": "W4", "flight_number": "5011", "duration_minutes": 100 } ], "return_legs": [] } ], "search_metadata": { "api_version": 2, "stage": "outbound", "origin": "TIA", "destination": "FCO", "departure_date": "2026-10-08", "return_date": "2026-10-15", "currency": "EUR" } } ``` ### 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" } ], "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) | | `engine` | string | No | SerpAPI-compatible engine identifier. Only google_hotels is accepted. | **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 [ { "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 | | `lrad` | integer | No | Search radius in kilometres: 5, 10, 25, 50 or 100. | | `gl` | string | No | Country code for geographic targeting (2 letters, e.g. de). | | `google_domain` | string | No | Google domain to query (e.g. google.com, google.de). | **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 Lens API Reverse-image search with structured visual, exact, and related matches. #### Google Lens Visual Search - **Docs**: https://scrappa.co/docs/google-lens-api/google-lens - **Summary**: Find visually similar products, pages, and related content from a public image URL. - **Description**: Submit a public HTTPS image URL to Google Lens. The response has stable `visual_matches`, `exact_matches`, and `related_content` arrays. Use `type` to focus the search; `q` can refine all, product, and visual-match searches. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | Yes | Public HTTPS URL for the image to search. | | `q` | string | No | Optional text used to refine visual or product matches. | | `type` | string | No | One of `all`, `products`, `exact_matches`, or `visual_matches`. | **Example request:** ``` GET https://scrappa.co/api/google/lens?url=https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2F4%2F45%2FA_small_cup_of_coffee.JPG&type=visual_matches Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "url": "https://upload.wikimedia.org/wikipedia/commons/4/45/A_small_cup_of_coffee.JPG", "q": null, "type": "visual_matches" }, "visual_matches": [ { "source": "Wikipedia", "title": "Coffee cup", "link": "https://en.wikipedia.org/wiki/Coffee", "thumbnail": "https://encrypted-tbn0.gstatic.com/images?q=tbn:example", "price": null, "position": 1 } ], "exact_matches": [], "related_content": [] } ``` ### 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=coffee+shops+in+Berlin&zoom=13&lat=52.52&lon=13.405&limit=5&hl=en&gl=de 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 the first-party Google reviews summary. The review_count and reviews_per_rating fields exclude syndicated reviews and align with the unique Google Reviews items where is_google_review is true. **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_updated_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. `timestamp` is the original review creation time when Google exposes it; `review_updated_timestamp` is the edited/display timestamp used by Google Maps UI when available. The endpoint keeps every valid review returned by Google Maps and removes duplicate review IDs across fetched pages. First-party reviews have `review_source: "Google"`, a numeric Google contributor `author_id`, and `is_google_review: true`. Syndicated reviews remain available with their actual provider, such as `Jameda`, `GoLocal`, `Trustpilot`, `Justdial`, or `Priceline`, and `is_google_review: false`. Their `rating` is `null` when Google does not provide a compatible 1–5 star rating. An explicit provider name is preserved; missing attribution is reported as `External`. The `review_count` and `reviews_per_rating` fields from Google Maps Business Details describe Google's listing totals, but they do not guarantee that every review is available through the paginated public feed. ## 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. A `nextPage` token is reusable for 30 minutes after it is issued and is valid only for the same business. An invalid or expired token returns a non-billable `410` response with `error_code: "continuation_token_invalid_or_expired"`; restart from the first page by omitting `page`. For deeper collection, prefer a multi-page `pages` request because Scrappa follows continuation tokens inside one request and starts bounded recovery when a full page unexpectedly omits its token. Google can still stop returning a continuation token before the displayed review count is reached, so `nextPage: null` does not prove that every displayed review was retrievable. Use `termination_reason`, `feed_exhausted`, `continuation_retries`, and `continuation_recovered` to diagnose how collection stopped. 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` | integer | No | Sorting order: 1 for Most Relevant, 2 for Newest, 3 for Highest Rating, 4 for Lowest Rating. | | `page` | string | No | Continuation token returned as `nextPage` by a previous response. Reusable for 30 minutes with the same business ID. Invalid or expired tokens return a non-billable 410 response. | | `pages` | integer | No | Number of pages to fetch in a single request (1-50). Each successfully fetched page counts as one API credit. Multi-page requests are preferred for deeper pagination. The response includes termination and continuation-recovery diagnostics. | | `limit` | integer | 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": 1704067200000, "review_updated_timestamp": 1704153600000, "review_link": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChZDSUhNMG9nS0VJQ0FnSUM1bnYzQzJ3EAE", "review_source": "Google", "is_google_review": true, "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, "termination_reason": "token_missing", "feed_exhausted": null, "continuation_retries": 0, "continuation_recovered": false } ``` #### 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 | Google Business ID in 0x...:0x... format or Google Place ID starting with ChIJ. | | `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). | | `fields` | string | No | Comma-separated list of fields to return (e.g., name,rating,review_count). | **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 Play API Extract app details and public developer support data from Google Play. #### Google Play App Details - **Docs**: https://scrappa.co/docs/google-play-api/google_play_details - **Summary**: Extract public Google Play product, app support, reviews, and developer details - **Description**: Extract public Google Play product details including product info, media, ratings, reviews, website, support email, privacy policy, and developer contact fields. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `product_id` | string | Yes | Google Play product id. For apps this is the package name. | | `id` | string | No | Legacy alias for product_id. | | `store` | string | No | Google Play store vertical: apps, movies, tv, books, or audiobooks. | | `season_id` | string | No | TV season id for Google Play TV products. | | `all_reviews` | boolean | No | Request Google Play review-expanded product pages when available. | | `platform` | string | No | Review platform filter, such as phone, tablet, tv, chromebook, watch, or car. | | `rating` | integer | No | Review rating filter from 1 to 5. | | `sort_by` | string | No | Review sort mode, such as 1, 2, 3, most_relevant, newest, or rating. | | `num` | integer | No | Requested review result count for clients that need SerpApi-compatible parameters. | | `next_page_token` | string | No | Review pagination token for clients that need SerpApi-compatible parameters. | | `url` | string | No | Google Play URL of the item. Alternative to supplying the product identifier. | | `hl` | string | No | Interface language code (e.g. en, de). | | `gl` | string | No | Country code for the storefront (2 letters, e.g. us, de). | **Example request:** ``` GET https://scrappa.co/api/google/play/details?product_id=com.hair_flutter&store=apps Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "google_play_details", "product_id": "com.hair_flutter", "id": "com.hair_flutter", "store": "apps", "hl": "en", "gl": "US" }, "app": { "app_id": "com.hair_flutter", "title": "Hairstyle Try On - AI Haircut", "developer": "JYCoder", "url": "https://play.google.com/store/apps/details?id=com.hair_flutter&hl=en&gl=US" }, "product_info": { "title": "Hairstyle Try On - AI Haircut", "authors": [ { "name": "JYCoder", "link": "https://play.google.com/store/apps/developer?id=JYCoder" } ], "extensions": [ "Contains ads", "In-app purchases" ], "rating": 3.9, "reviews": 130971, "downloads": "1M+", "thumbnail": "https://play-lh.googleusercontent.com/9h_tFkTEDjJ_xJm_Q3esLk2UKJxI4pZNHHbUg1JBJOyfJWb7Fh4isLlc8KeC5BmBYUGBlnvOnFEhcqJBWQik" }, "media": { "images": [ "https://play-lh.googleusercontent.com/3W68JpIQJRZbIitj6YHlfOSCrGW0w2aoF0rd041n4gA7BL31yStxbEZCgBzW706fhW_4XfC51cbW0_QOErlcKMo=w526-h296-rw" ] }, "about_this_app": { "version": "338.0.0", "requires_android": "6.0", "in_app_purchases": "$9.99 - $49.00 per item", "released_on": "Jun 2, 2021", "updated_on": "Jun 25, 2026", "downloads": "1,000,000+", "content_rating": "Everyone", "offered_by": "JYCoder" }, "categories": [ { "name": "Beauty", "link": "https://play.google.com/store/apps/category/BEAUTY", "category_id": "BEAUTY" } ], "data_safety": [ { "text": "No data collected", "subtext": "Learn more about how developers declare collection" }, { "text": "Data is encrypted in transit" } ], "ratings": [ { "stars": 5, "count": 88416 } ], "reviews": [ { "id": "57bfa1c4-d7ec-4c10-b6b4-5c01c888804f", "title": "Amanda Christian", "rating": 1, "snippet": "Summary - definitely not worth the 50 for subscription...", "likes": 5, "date": "June 13, 2026", "iso_date": "2026-06-13T00:07:15Z" } ], "app_support": { "support_email": "jycoder@gmail.com", "privacy_policy": "https://doc-hosting.flycricket.io/hairstyle-try-on-privacy-policy/75714506-5e43-441d-8d62-852687598dd2/privacy" }, "about_the_developer": { "name": "\u5b63\u5b87\u7eaf", "email": "myt890515@gmail.com", "address": "\u5357\u516d\u516c\u8def399\u5f04 \u6d66\u4e1c\u65b0\u533a, \u4e0a\u6d77\u5e02 China 201399" }, "developer_contact": { "website": "https://z91650577.app-ads-txt.com", "support_email": "jycoder@gmail.com", "privacy_policy": "https://doc-hosting.flycricket.io/hairstyle-try-on-privacy-policy/75714506-5e43-441d-8d62-852687598dd2/privacy", "name": "\u5b63\u5b87\u7eaf", "alternative_email": "myt890515@gmail.com", "address": "\u5357\u516d\u516c\u8def399\u5f04 \u6d66\u4e1c\u65b0\u533a, \u4e0a\u6d77\u5e02 China 201399" } } ``` #### Google Play Apps Product - **Docs**: https://scrappa.co/docs/google-play-api/google_play_apps_product - **Summary**: Extract public Google Play app product details and embedded reviews. - **Description**: Google Play apps product endpoint with SerpApi-compatible product_id, localization, review filter, and pagination parameters. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `product_id` | string | Yes | Google Play product id. For apps this is the package name. | | `id` | string | No | Legacy alias for product_id. | | `store` | string | No | Google Play store vertical: apps, movies, tv, books, or audiobooks. | | `season_id` | string | No | TV season id for Google Play TV products. | | `all_reviews` | boolean | No | Request Google Play review-expanded product pages when available. | | `platform` | string | No | Review platform filter, such as phone, tablet, tv, chromebook, watch, or car. | | `rating` | integer | No | Review rating filter from 1 to 5. | | `sort_by` | string | No | Review sort mode, such as 1, 2, 3, most_relevant, newest, or rating. | | `num` | integer | No | Requested review result count for clients that need SerpApi-compatible parameters. | | `next_page_token` | string | No | Review pagination token for clients that need SerpApi-compatible parameters. | | `url` | string | No | Google Play URL of the item. Alternative to supplying the product identifier. | | `hl` | string | No | Interface language code (e.g. en, de). | | `gl` | string | No | Country code for the storefront (2 letters, e.g. us, de). | **Example request:** ``` GET https://scrappa.co/api/google/play/apps/product?product_id=com.hair_flutter Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "google_play_details", "product_id": "com.hair_flutter", "id": "com.hair_flutter", "store": "apps", "hl": "en", "gl": "US" }, "app": { "app_id": "com.hair_flutter", "title": "Hairstyle Try On - AI Haircut", "developer": "JYCoder", "url": "https://play.google.com/store/apps/details?id=com.hair_flutter&hl=en&gl=US" }, "product_info": { "title": "Hairstyle Try On - AI Haircut", "authors": [ { "name": "JYCoder", "link": "https://play.google.com/store/apps/developer?id=JYCoder" } ], "extensions": [ "Contains ads", "In-app purchases" ], "rating": 3.9, "reviews": 130971, "downloads": "1M+", "thumbnail": "https://play-lh.googleusercontent.com/9h_tFkTEDjJ_xJm_Q3esLk2UKJxI4pZNHHbUg1JBJOyfJWb7Fh4isLlc8KeC5BmBYUGBlnvOnFEhcqJBWQik" }, "media": { "images": [ "https://play-lh.googleusercontent.com/3W68JpIQJRZbIitj6YHlfOSCrGW0w2aoF0rd041n4gA7BL31yStxbEZCgBzW706fhW_4XfC51cbW0_QOErlcKMo=w526-h296-rw" ] }, "about_this_app": { "version": "338.0.0", "requires_android": "6.0", "in_app_purchases": "$9.99 - $49.00 per item", "released_on": "Jun 2, 2021", "updated_on": "Jun 25, 2026", "downloads": "1,000,000+", "content_rating": "Everyone", "offered_by": "JYCoder" }, "categories": [ { "name": "Beauty", "link": "https://play.google.com/store/apps/category/BEAUTY", "category_id": "BEAUTY" } ], "data_safety": [ { "text": "No data collected", "subtext": "Learn more about how developers declare collection" }, { "text": "Data is encrypted in transit" } ], "ratings": [ { "stars": 5, "count": 88416 } ], "reviews": [ { "id": "57bfa1c4-d7ec-4c10-b6b4-5c01c888804f", "title": "Amanda Christian", "rating": 1, "snippet": "Summary - definitely not worth the 50 for subscription...", "likes": 5, "date": "June 13, 2026", "iso_date": "2026-06-13T00:07:15Z" } ], "app_support": { "support_email": "jycoder@gmail.com", "privacy_policy": "https://doc-hosting.flycricket.io/hairstyle-try-on-privacy-policy/75714506-5e43-441d-8d62-852687598dd2/privacy" }, "about_the_developer": { "name": "\u5b63\u5b87\u7eaf", "email": "myt890515@gmail.com", "address": "\u5357\u516d\u516c\u8def399\u5f04 \u6d66\u4e1c\u65b0\u533a, \u4e0a\u6d77\u5e02 China 201399" }, "developer_contact": { "website": "https://z91650577.app-ads-txt.com", "support_email": "jycoder@gmail.com", "privacy_policy": "https://doc-hosting.flycricket.io/hairstyle-try-on-privacy-policy/75714506-5e43-441d-8d62-852687598dd2/privacy", "name": "\u5b63\u5b87\u7eaf", "alternative_email": "myt890515@gmail.com", "address": "\u5357\u516d\u516c\u8def399\u5f04 \u6d66\u4e1c\u65b0\u533a, \u4e0a\u6d77\u5e02 China 201399" } } ``` #### Google Play Audiobooks Product - **Docs**: https://scrappa.co/docs/google-play-api/google_play_audiobooks_product - **Summary**: Extract public Google Play audiobook product details. - **Description**: Retrieve public Google Play audiobook product data by product ID, with localization and supported review rating, platform, sorting, and result-count controls. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `product_id` | string | Yes | Google Play product id. For apps this is the package name. | | `id` | string | No | Legacy alias for product_id. | | `store` | string | No | Google Play store vertical: apps, movies, tv, books, or audiobooks. | | `season_id` | string | No | TV season id for Google Play TV products. | | `all_reviews` | boolean | No | Request Google Play review-expanded product pages when available. | | `platform` | string | No | Review platform filter, such as phone, tablet, tv, chromebook, watch, or car. | | `rating` | integer | No | Review rating filter from 1 to 5. | | `sort_by` | string | No | Review sort mode, such as 1, 2, 3, most_relevant, newest, or rating. | | `num` | integer | No | Requested review result count for clients that need SerpApi-compatible parameters. | | `next_page_token` | string | No | Review pagination token for clients that need SerpApi-compatible parameters. | | `url` | string | No | Google Play URL of the item. Alternative to supplying the product identifier. | | `hl` | string | No | Interface language code (e.g. en, de). | | `gl` | string | No | Country code for the storefront (2 letters, e.g. us, de). | **Example request:** ``` GET https://scrappa.co/api/google/play/audiobooks/product?product_id=com.hair_flutter&store=apps Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "google_play_details", "product_id": "com.hair_flutter", "id": "com.hair_flutter", "store": "apps", "hl": "en", "gl": "US" }, "app": { "app_id": "com.hair_flutter", "title": "Hairstyle Try On - AI Haircut", "developer": "JYCoder", "url": "https://play.google.com/store/apps/details?id=com.hair_flutter&hl=en&gl=US" }, "product_info": { "title": "Hairstyle Try On - AI Haircut", "authors": [ { "name": "JYCoder", "link": "https://play.google.com/store/apps/developer?id=JYCoder" } ], "extensions": [ "Contains ads", "In-app purchases" ], "rating": 3.9, "reviews": 130971, "downloads": "1M+", "thumbnail": "https://play-lh.googleusercontent.com/9h_tFkTEDjJ_xJm_Q3esLk2UKJxI4pZNHHbUg1JBJOyfJWb7Fh4isLlc8KeC5BmBYUGBlnvOnFEhcqJBWQik" }, "media": { "images": [ "https://play-lh.googleusercontent.com/3W68JpIQJRZbIitj6YHlfOSCrGW0w2aoF0rd041n4gA7BL31yStxbEZCgBzW706fhW_4XfC51cbW0_QOErlcKMo=w526-h296-rw" ] }, "about_this_app": { "version": "338.0.0", "requires_android": "6.0", "in_app_purchases": "$9.99 - $49.00 per item", "released_on": "Jun 2, 2021", "updated_on": "Jun 25, 2026", "downloads": "1,000,000+", "content_rating": "Everyone", "offered_by": "JYCoder" }, "categories": [ { "name": "Beauty", "link": "https://play.google.com/store/apps/category/BEAUTY", "category_id": "BEAUTY" } ], "data_safety": [ { "text": "No data collected", "subtext": "Learn more about how developers declare collection" }, { "text": "Data is encrypted in transit" } ], "ratings": [ { "stars": 5, "count": 88416 } ], "reviews": [ { "id": "57bfa1c4-d7ec-4c10-b6b4-5c01c888804f", "title": "Amanda Christian", "rating": 1, "snippet": "Summary - definitely not worth the 50 for subscription...", "likes": 5, "date": "June 13, 2026", "iso_date": "2026-06-13T00:07:15Z" } ], "app_support": { "support_email": "jycoder@gmail.com", "privacy_policy": "https://doc-hosting.flycricket.io/hairstyle-try-on-privacy-policy/75714506-5e43-441d-8d62-852687598dd2/privacy" }, "about_the_developer": { "name": "\u5b63\u5b87\u7eaf", "email": "myt890515@gmail.com", "address": "\u5357\u516d\u516c\u8def399\u5f04 \u6d66\u4e1c\u65b0\u533a, \u4e0a\u6d77\u5e02 China 201399" }, "developer_contact": { "website": "https://z91650577.app-ads-txt.com", "support_email": "jycoder@gmail.com", "privacy_policy": "https://doc-hosting.flycricket.io/hairstyle-try-on-privacy-policy/75714506-5e43-441d-8d62-852687598dd2/privacy", "name": "\u5b63\u5b87\u7eaf", "alternative_email": "myt890515@gmail.com", "address": "\u5357\u516d\u516c\u8def399\u5f04 \u6d66\u4e1c\u65b0\u533a, \u4e0a\u6d77\u5e02 China 201399" } } ``` #### Google Play Books Product - **Docs**: https://scrappa.co/docs/google-play-api/google_play_books_product - **Summary**: Extract public Google Play book product details and embedded reviews. - **Description**: Google Play books product endpoint with SerpApi-compatible product_id, localization, review filter, and pagination parameters. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `product_id` | string | Yes | Google Play product id. For apps this is the package name. | | `id` | string | No | Legacy alias for product_id. | | `store` | string | No | Google Play store vertical: apps, movies, tv, books, or audiobooks. | | `season_id` | string | No | TV season id for Google Play TV products. | | `all_reviews` | boolean | No | Request Google Play review-expanded product pages when available. | | `platform` | string | No | Review platform filter, such as phone, tablet, tv, chromebook, watch, or car. | | `rating` | integer | No | Review rating filter from 1 to 5. | | `sort_by` | string | No | Review sort mode, such as 1, 2, 3, most_relevant, newest, or rating. | | `num` | integer | No | Requested review result count for clients that need SerpApi-compatible parameters. | | `next_page_token` | string | No | Review pagination token for clients that need SerpApi-compatible parameters. | | `url` | string | No | Google Play URL of the item. Alternative to supplying the product identifier. | | `hl` | string | No | Interface language code (e.g. en, de). | | `gl` | string | No | Country code for the storefront (2 letters, e.g. us, de). | **Example request:** ``` GET https://scrappa.co/api/google/play/books/product?product_id=com.hair_flutter&store=apps Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "google_play_details", "product_id": "com.hair_flutter", "id": "com.hair_flutter", "store": "apps", "hl": "en", "gl": "US" }, "app": { "app_id": "com.hair_flutter", "title": "Hairstyle Try On - AI Haircut", "developer": "JYCoder", "url": "https://play.google.com/store/apps/details?id=com.hair_flutter&hl=en&gl=US" }, "product_info": { "title": "Hairstyle Try On - AI Haircut", "authors": [ { "name": "JYCoder", "link": "https://play.google.com/store/apps/developer?id=JYCoder" } ], "extensions": [ "Contains ads", "In-app purchases" ], "rating": 3.9, "reviews": 130971, "downloads": "1M+", "thumbnail": "https://play-lh.googleusercontent.com/9h_tFkTEDjJ_xJm_Q3esLk2UKJxI4pZNHHbUg1JBJOyfJWb7Fh4isLlc8KeC5BmBYUGBlnvOnFEhcqJBWQik" }, "media": { "images": [ "https://play-lh.googleusercontent.com/3W68JpIQJRZbIitj6YHlfOSCrGW0w2aoF0rd041n4gA7BL31yStxbEZCgBzW706fhW_4XfC51cbW0_QOErlcKMo=w526-h296-rw" ] }, "about_this_app": { "version": "338.0.0", "requires_android": "6.0", "in_app_purchases": "$9.99 - $49.00 per item", "released_on": "Jun 2, 2021", "updated_on": "Jun 25, 2026", "downloads": "1,000,000+", "content_rating": "Everyone", "offered_by": "JYCoder" }, "categories": [ { "name": "Beauty", "link": "https://play.google.com/store/apps/category/BEAUTY", "category_id": "BEAUTY" } ], "data_safety": [ { "text": "No data collected", "subtext": "Learn more about how developers declare collection" }, { "text": "Data is encrypted in transit" } ], "ratings": [ { "stars": 5, "count": 88416 } ], "reviews": [ { "id": "57bfa1c4-d7ec-4c10-b6b4-5c01c888804f", "title": "Amanda Christian", "rating": 1, "snippet": "Summary - definitely not worth the 50 for subscription...", "likes": 5, "date": "June 13, 2026", "iso_date": "2026-06-13T00:07:15Z" } ], "app_support": { "support_email": "jycoder@gmail.com", "privacy_policy": "https://doc-hosting.flycricket.io/hairstyle-try-on-privacy-policy/75714506-5e43-441d-8d62-852687598dd2/privacy" }, "about_the_developer": { "name": "\u5b63\u5b87\u7eaf", "email": "myt890515@gmail.com", "address": "\u5357\u516d\u516c\u8def399\u5f04 \u6d66\u4e1c\u65b0\u533a, \u4e0a\u6d77\u5e02 China 201399" }, "developer_contact": { "website": "https://z91650577.app-ads-txt.com", "support_email": "jycoder@gmail.com", "privacy_policy": "https://doc-hosting.flycricket.io/hairstyle-try-on-privacy-policy/75714506-5e43-441d-8d62-852687598dd2/privacy", "name": "\u5b63\u5b87\u7eaf", "alternative_email": "myt890515@gmail.com", "address": "\u5357\u516d\u516c\u8def399\u5f04 \u6d66\u4e1c\u65b0\u533a, \u4e0a\u6d77\u5e02 China 201399" } } ``` #### Google Play Movies Product - **Docs**: https://scrappa.co/docs/google-play-api/google_play_movies_product - **Summary**: Extract public Google Play movie product details and embedded reviews. - **Description**: Google Play movies product endpoint with SerpApi-compatible product_id, localization, rating, all_reviews, and next_page_token parameters. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `product_id` | string | Yes | Google Play product id. For apps this is the package name. | | `id` | string | No | Legacy alias for product_id. | | `store` | string | No | Google Play store vertical: apps, movies, tv, books, or audiobooks. | | `season_id` | string | No | TV season id for Google Play TV products. | | `all_reviews` | boolean | No | Request Google Play review-expanded product pages when available. | | `platform` | string | No | Review platform filter, such as phone, tablet, tv, chromebook, watch, or car. | | `rating` | integer | No | Review rating filter from 1 to 5. | | `sort_by` | string | No | Review sort mode, such as 1, 2, 3, most_relevant, newest, or rating. | | `num` | integer | No | Requested review result count for clients that need SerpApi-compatible parameters. | | `next_page_token` | string | No | Review pagination token for clients that need SerpApi-compatible parameters. | | `url` | string | No | Google Play URL of the item. Alternative to supplying the product identifier. | | `hl` | string | No | Interface language code (e.g. en, de). | | `gl` | string | No | Country code for the storefront (2 letters, e.g. us, de). | **Example request:** ``` GET https://scrappa.co/api/google/play/movies/product?product_id=com.hair_flutter&store=apps Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "google_play_details", "product_id": "com.hair_flutter", "id": "com.hair_flutter", "store": "apps", "hl": "en", "gl": "US" }, "app": { "app_id": "com.hair_flutter", "title": "Hairstyle Try On - AI Haircut", "developer": "JYCoder", "url": "https://play.google.com/store/apps/details?id=com.hair_flutter&hl=en&gl=US" }, "product_info": { "title": "Hairstyle Try On - AI Haircut", "authors": [ { "name": "JYCoder", "link": "https://play.google.com/store/apps/developer?id=JYCoder" } ], "extensions": [ "Contains ads", "In-app purchases" ], "rating": 3.9, "reviews": 130971, "downloads": "1M+", "thumbnail": "https://play-lh.googleusercontent.com/9h_tFkTEDjJ_xJm_Q3esLk2UKJxI4pZNHHbUg1JBJOyfJWb7Fh4isLlc8KeC5BmBYUGBlnvOnFEhcqJBWQik" }, "media": { "images": [ "https://play-lh.googleusercontent.com/3W68JpIQJRZbIitj6YHlfOSCrGW0w2aoF0rd041n4gA7BL31yStxbEZCgBzW706fhW_4XfC51cbW0_QOErlcKMo=w526-h296-rw" ] }, "about_this_app": { "version": "338.0.0", "requires_android": "6.0", "in_app_purchases": "$9.99 - $49.00 per item", "released_on": "Jun 2, 2021", "updated_on": "Jun 25, 2026", "downloads": "1,000,000+", "content_rating": "Everyone", "offered_by": "JYCoder" }, "categories": [ { "name": "Beauty", "link": "https://play.google.com/store/apps/category/BEAUTY", "category_id": "BEAUTY" } ], "data_safety": [ { "text": "No data collected", "subtext": "Learn more about how developers declare collection" }, { "text": "Data is encrypted in transit" } ], "ratings": [ { "stars": 5, "count": 88416 } ], "reviews": [ { "id": "57bfa1c4-d7ec-4c10-b6b4-5c01c888804f", "title": "Amanda Christian", "rating": 1, "snippet": "Summary - definitely not worth the 50 for subscription...", "likes": 5, "date": "June 13, 2026", "iso_date": "2026-06-13T00:07:15Z" } ], "app_support": { "support_email": "jycoder@gmail.com", "privacy_policy": "https://doc-hosting.flycricket.io/hairstyle-try-on-privacy-policy/75714506-5e43-441d-8d62-852687598dd2/privacy" }, "about_the_developer": { "name": "\u5b63\u5b87\u7eaf", "email": "myt890515@gmail.com", "address": "\u5357\u516d\u516c\u8def399\u5f04 \u6d66\u4e1c\u65b0\u533a, \u4e0a\u6d77\u5e02 China 201399" }, "developer_contact": { "website": "https://z91650577.app-ads-txt.com", "support_email": "jycoder@gmail.com", "privacy_policy": "https://doc-hosting.flycricket.io/hairstyle-try-on-privacy-policy/75714506-5e43-441d-8d62-852687598dd2/privacy", "name": "\u5b63\u5b87\u7eaf", "alternative_email": "myt890515@gmail.com", "address": "\u5357\u516d\u516c\u8def399\u5f04 \u6d66\u4e1c\u65b0\u533a, \u4e0a\u6d77\u5e02 China 201399" } } ``` #### Google Play Product - **Docs**: https://scrappa.co/docs/google-play-api/google_play_product - **Summary**: Extract public Google Play product data across apps, books, audiobooks, movies, and TV. - **Description**: SerpApi-compatible Google Play product endpoint accepting product_id, store, localization, review filter, and pagination parameters. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `product_id` | string | Yes | Google Play product id. For apps this is the package name. | | `id` | string | No | Legacy alias for product_id. | | `store` | string | No | Google Play store vertical: apps, movies, tv, books, or audiobooks. | | `season_id` | string | No | TV season id for Google Play TV products. | | `all_reviews` | boolean | No | Request Google Play review-expanded product pages when available. | | `platform` | string | No | Review platform filter, such as phone, tablet, tv, chromebook, watch, or car. | | `rating` | integer | No | Review rating filter from 1 to 5. | | `sort_by` | string | No | Review sort mode, such as 1, 2, 3, most_relevant, newest, or rating. | | `num` | integer | No | Requested review result count for clients that need SerpApi-compatible parameters. | | `next_page_token` | string | No | Review pagination token for clients that need SerpApi-compatible parameters. | | `url` | string | No | Google Play URL of the item. Alternative to supplying the product identifier. | | `hl` | string | No | Interface language code (e.g. en, de). | | `gl` | string | No | Country code for the storefront (2 letters, e.g. us, de). | **Example request:** ``` GET https://scrappa.co/api/google/play/product?product_id=com.hair_flutter&store=apps Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "google_play_details", "product_id": "com.hair_flutter", "id": "com.hair_flutter", "store": "apps", "hl": "en", "gl": "US" }, "app": { "app_id": "com.hair_flutter", "title": "Hairstyle Try On - AI Haircut", "developer": "JYCoder", "url": "https://play.google.com/store/apps/details?id=com.hair_flutter&hl=en&gl=US" }, "product_info": { "title": "Hairstyle Try On - AI Haircut", "authors": [ { "name": "JYCoder", "link": "https://play.google.com/store/apps/developer?id=JYCoder" } ], "extensions": [ "Contains ads", "In-app purchases" ], "rating": 3.9, "reviews": 130971, "downloads": "1M+", "thumbnail": "https://play-lh.googleusercontent.com/9h_tFkTEDjJ_xJm_Q3esLk2UKJxI4pZNHHbUg1JBJOyfJWb7Fh4isLlc8KeC5BmBYUGBlnvOnFEhcqJBWQik" }, "media": { "images": [ "https://play-lh.googleusercontent.com/3W68JpIQJRZbIitj6YHlfOSCrGW0w2aoF0rd041n4gA7BL31yStxbEZCgBzW706fhW_4XfC51cbW0_QOErlcKMo=w526-h296-rw" ] }, "about_this_app": { "version": "338.0.0", "requires_android": "6.0", "in_app_purchases": "$9.99 - $49.00 per item", "released_on": "Jun 2, 2021", "updated_on": "Jun 25, 2026", "downloads": "1,000,000+", "content_rating": "Everyone", "offered_by": "JYCoder" }, "categories": [ { "name": "Beauty", "link": "https://play.google.com/store/apps/category/BEAUTY", "category_id": "BEAUTY" } ], "data_safety": [ { "text": "No data collected", "subtext": "Learn more about how developers declare collection" }, { "text": "Data is encrypted in transit" } ], "ratings": [ { "stars": 5, "count": 88416 } ], "reviews": [ { "id": "57bfa1c4-d7ec-4c10-b6b4-5c01c888804f", "title": "Amanda Christian", "rating": 1, "snippet": "Summary - definitely not worth the 50 for subscription...", "likes": 5, "date": "June 13, 2026", "iso_date": "2026-06-13T00:07:15Z" } ], "app_support": { "support_email": "jycoder@gmail.com", "privacy_policy": "https://doc-hosting.flycricket.io/hairstyle-try-on-privacy-policy/75714506-5e43-441d-8d62-852687598dd2/privacy" }, "about_the_developer": { "name": "\u5b63\u5b87\u7eaf", "email": "myt890515@gmail.com", "address": "\u5357\u516d\u516c\u8def399\u5f04 \u6d66\u4e1c\u65b0\u533a, \u4e0a\u6d77\u5e02 China 201399" }, "developer_contact": { "website": "https://z91650577.app-ads-txt.com", "support_email": "jycoder@gmail.com", "privacy_policy": "https://doc-hosting.flycricket.io/hairstyle-try-on-privacy-policy/75714506-5e43-441d-8d62-852687598dd2/privacy", "name": "\u5b63\u5b87\u7eaf", "alternative_email": "myt890515@gmail.com", "address": "\u5357\u516d\u516c\u8def399\u5f04 \u6d66\u4e1c\u65b0\u533a, \u4e0a\u6d77\u5e02 China 201399" } } ``` #### Google Play Product Reviews - **Docs**: https://scrappa.co/docs/google-play-api/google_play_product_reviews - **Summary**: Extract Google Play product reviews from public product pages. - **Description**: Google Play product reviews endpoint accepting SerpApi-compatible store, all_reviews, platform, rating, sort_by, num, and next_page_token parameters. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `product_id` | string | Yes | Google Play product id. For apps this is the package name. | | `id` | string | No | Legacy alias for product_id. | | `store` | string | No | Google Play store vertical: apps, movies, tv, books, or audiobooks. | | `season_id` | string | No | TV season id for Google Play TV products. | | `all_reviews` | boolean | No | Request Google Play review-expanded product pages when available. | | `platform` | string | No | Review platform filter, such as phone, tablet, tv, chromebook, watch, or car. | | `rating` | integer | No | Review rating filter from 1 to 5. | | `sort_by` | string | No | Review sort mode, such as 1, 2, 3, most_relevant, newest, or rating. | | `num` | integer | No | Requested review result count for clients that need SerpApi-compatible parameters. | | `next_page_token` | string | No | Review pagination token for clients that need SerpApi-compatible parameters. | | `url` | string | No | Google Play URL of the item. Alternative to supplying the product identifier. | | `hl` | string | No | Interface language code (e.g. en, de). | | `gl` | string | No | Country code for the storefront (2 letters, e.g. us, de). | **Example request:** ``` GET https://scrappa.co/api/google/play/product/reviews?product_id=com.hair_flutter&store=apps&all_reviews=1 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "google_play_details", "product_id": "com.hair_flutter", "id": "com.hair_flutter", "store": "apps", "hl": "en", "gl": "US" }, "app": { "app_id": "com.hair_flutter", "title": "Hairstyle Try On - AI Haircut", "developer": "JYCoder", "url": "https://play.google.com/store/apps/details?id=com.hair_flutter&hl=en&gl=US" }, "product_info": { "title": "Hairstyle Try On - AI Haircut", "authors": [ { "name": "JYCoder", "link": "https://play.google.com/store/apps/developer?id=JYCoder" } ], "extensions": [ "Contains ads", "In-app purchases" ], "rating": 3.9, "reviews": 130971, "downloads": "1M+", "thumbnail": "https://play-lh.googleusercontent.com/9h_tFkTEDjJ_xJm_Q3esLk2UKJxI4pZNHHbUg1JBJOyfJWb7Fh4isLlc8KeC5BmBYUGBlnvOnFEhcqJBWQik" }, "media": { "images": [ "https://play-lh.googleusercontent.com/3W68JpIQJRZbIitj6YHlfOSCrGW0w2aoF0rd041n4gA7BL31yStxbEZCgBzW706fhW_4XfC51cbW0_QOErlcKMo=w526-h296-rw" ] }, "about_this_app": { "version": "338.0.0", "requires_android": "6.0", "in_app_purchases": "$9.99 - $49.00 per item", "released_on": "Jun 2, 2021", "updated_on": "Jun 25, 2026", "downloads": "1,000,000+", "content_rating": "Everyone", "offered_by": "JYCoder" }, "categories": [ { "name": "Beauty", "link": "https://play.google.com/store/apps/category/BEAUTY", "category_id": "BEAUTY" } ], "data_safety": [ { "text": "No data collected", "subtext": "Learn more about how developers declare collection" }, { "text": "Data is encrypted in transit" } ], "ratings": [ { "stars": 5, "count": 88416 } ], "reviews": [ { "id": "57bfa1c4-d7ec-4c10-b6b4-5c01c888804f", "title": "Amanda Christian", "rating": 1, "snippet": "Summary - definitely not worth the 50 for subscription...", "likes": 5, "date": "June 13, 2026", "iso_date": "2026-06-13T00:07:15Z" } ], "app_support": { "support_email": "jycoder@gmail.com", "privacy_policy": "https://doc-hosting.flycricket.io/hairstyle-try-on-privacy-policy/75714506-5e43-441d-8d62-852687598dd2/privacy" }, "about_the_developer": { "name": "\u5b63\u5b87\u7eaf", "email": "myt890515@gmail.com", "address": "\u5357\u516d\u516c\u8def399\u5f04 \u6d66\u4e1c\u65b0\u533a, \u4e0a\u6d77\u5e02 China 201399" }, "developer_contact": { "website": "https://z91650577.app-ads-txt.com", "support_email": "jycoder@gmail.com", "privacy_policy": "https://doc-hosting.flycricket.io/hairstyle-try-on-privacy-policy/75714506-5e43-441d-8d62-852687598dd2/privacy", "name": "\u5b63\u5b87\u7eaf", "alternative_email": "myt890515@gmail.com", "address": "\u5357\u516d\u516c\u8def399\u5f04 \u6d66\u4e1c\u65b0\u533a, \u4e0a\u6d77\u5e02 China 201399" } } ``` #### Google Play TV Product - **Docs**: https://scrappa.co/docs/google-play-api/google_play_tv_product - **Summary**: Extract public Google Play TV product details. - **Description**: Google Play TV product endpoint with SerpApi-compatible product_id, season_id, localization, review filter, and pagination parameters. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `product_id` | string | Yes | Google Play product id. For apps this is the package name. | | `id` | string | No | Legacy alias for product_id. | | `store` | string | No | Google Play store vertical: apps, movies, tv, books, or audiobooks. | | `season_id` | string | No | TV season id for Google Play TV products. | | `all_reviews` | boolean | No | Request Google Play review-expanded product pages when available. | | `platform` | string | No | Review platform filter, such as phone, tablet, tv, chromebook, watch, or car. | | `rating` | integer | No | Review rating filter from 1 to 5. | | `sort_by` | string | No | Review sort mode, such as 1, 2, 3, most_relevant, newest, or rating. | | `num` | integer | No | Requested review result count for clients that need SerpApi-compatible parameters. | | `next_page_token` | string | No | Review pagination token for clients that need SerpApi-compatible parameters. | | `url` | string | No | Google Play URL of the item. Alternative to supplying the product identifier. | | `hl` | string | No | Interface language code (e.g. en, de). | | `gl` | string | No | Country code for the storefront (2 letters, e.g. us, de). | **Example request:** ``` GET https://scrappa.co/api/google/play/tv/product?product_id=com.hair_flutter&store=apps Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "google_play_details", "product_id": "com.hair_flutter", "id": "com.hair_flutter", "store": "apps", "hl": "en", "gl": "US" }, "app": { "app_id": "com.hair_flutter", "title": "Hairstyle Try On - AI Haircut", "developer": "JYCoder", "url": "https://play.google.com/store/apps/details?id=com.hair_flutter&hl=en&gl=US" }, "product_info": { "title": "Hairstyle Try On - AI Haircut", "authors": [ { "name": "JYCoder", "link": "https://play.google.com/store/apps/developer?id=JYCoder" } ], "extensions": [ "Contains ads", "In-app purchases" ], "rating": 3.9, "reviews": 130971, "downloads": "1M+", "thumbnail": "https://play-lh.googleusercontent.com/9h_tFkTEDjJ_xJm_Q3esLk2UKJxI4pZNHHbUg1JBJOyfJWb7Fh4isLlc8KeC5BmBYUGBlnvOnFEhcqJBWQik" }, "media": { "images": [ "https://play-lh.googleusercontent.com/3W68JpIQJRZbIitj6YHlfOSCrGW0w2aoF0rd041n4gA7BL31yStxbEZCgBzW706fhW_4XfC51cbW0_QOErlcKMo=w526-h296-rw" ] }, "about_this_app": { "version": "338.0.0", "requires_android": "6.0", "in_app_purchases": "$9.99 - $49.00 per item", "released_on": "Jun 2, 2021", "updated_on": "Jun 25, 2026", "downloads": "1,000,000+", "content_rating": "Everyone", "offered_by": "JYCoder" }, "categories": [ { "name": "Beauty", "link": "https://play.google.com/store/apps/category/BEAUTY", "category_id": "BEAUTY" } ], "data_safety": [ { "text": "No data collected", "subtext": "Learn more about how developers declare collection" }, { "text": "Data is encrypted in transit" } ], "ratings": [ { "stars": 5, "count": 88416 } ], "reviews": [ { "id": "57bfa1c4-d7ec-4c10-b6b4-5c01c888804f", "title": "Amanda Christian", "rating": 1, "snippet": "Summary - definitely not worth the 50 for subscription...", "likes": 5, "date": "June 13, 2026", "iso_date": "2026-06-13T00:07:15Z" } ], "app_support": { "support_email": "jycoder@gmail.com", "privacy_policy": "https://doc-hosting.flycricket.io/hairstyle-try-on-privacy-policy/75714506-5e43-441d-8d62-852687598dd2/privacy" }, "about_the_developer": { "name": "\u5b63\u5b87\u7eaf", "email": "myt890515@gmail.com", "address": "\u5357\u516d\u516c\u8def399\u5f04 \u6d66\u4e1c\u65b0\u533a, \u4e0a\u6d77\u5e02 China 201399" }, "developer_contact": { "website": "https://z91650577.app-ads-txt.com", "support_email": "jycoder@gmail.com", "privacy_policy": "https://doc-hosting.flycricket.io/hairstyle-try-on-privacy-policy/75714506-5e43-441d-8d62-852687598dd2/privacy", "name": "\u5b63\u5b87\u7eaf", "alternative_email": "myt890515@gmail.com", "address": "\u5357\u516d\u516c\u8def399\u5f04 \u6d66\u4e1c\u65b0\u533a, \u4e0a\u6d77\u5e02 China 201399" } } ``` ### Google Scholar API Search scholarly publications, cited-by results, and publication versions through an approved proxy path. #### Google Scholar Search - **Docs**: https://scrappa.co/docs/google-scholar-api/google_scholar_search - **Summary**: Search scholarly publications and citation relationships - **Description**: Returns normalized Google Scholar organic results, publication authors and resources, cited-by/version/related links, citations per year when Google provides them, and offset pagination. This search MVP does not include author profile or cite-format endpoints. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `q` | string | No | Scholar search query. Optional when cites or cluster is supplied. | | `hl` | string | No | Two-letter interface language, optionally with a region. Defaults to en. | | `start` | integer | No | Zero-based result offset from 0 to 990. Defaults to 0. | | `num` | integer | No | Results per request from 1 to 20. Defaults to 10. | | `as_ylo` | integer | No | Earliest publication year to include. | | `as_yhi` | integer | No | Latest publication year to include. | | `scisbd` | integer | No | 0 for relevance, 1 for recent abstracts, or 2 for all recent additions. | | `cites` | string | No | Numeric publication ID for a cited-by search. May be combined with q. | | `cluster` | string | No | Numeric publication ID for an all-versions search. Must be used alone. | **Example request:** ``` GET https://scrappa.co/api/google/scholar?q=machine+learning&hl=en&num=10&as_ylo=2020 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "search_parameters": { "engine": "google_scholar", "q": "machine learning", "hl": "en", "start": 0, "num": 10, "scisbd": 0 }, "search_information": { "query_displayed": "machine learning", "total_results": 4320000 }, "organic_results": [ { "position": 1, "title": "Machine learning", "result_id": "EQ8shYj8Ai8J", "link": "https://books.google.com/books?id=example", "snippet": "A scholarly publication about machine learning\u2026", "publication_info": { "summary": "ZH Zhou - 2021 - books.google.com", "authors": [ { "name": "ZH Zhou", "author_id": "rSVIHasAAAAJ" } ] }, "resources": [ { "title": "example.edu", "file_format": "PDF", "link": "https://example.edu/paper.pdf" } ], "inline_links": { "cited_by": { "total": 3894, "cites_id": "3387547533016043281" }, "versions": { "total": 7, "cluster_id": "3387547533016043281" } } } ], "citations_per_year": [], "pagination": { "current": 1, "start": 0, "num": 10, "next_start": 10, "has_next": true } }, "meta": { "duration_ms": 842 } } ``` ### Google Search API Search Google and get structured results #### Google AI Overview - **Docs**: https://scrappa.co/docs/google-search-api/google_search_ai_overview - **Summary**: Dedicated Google AI Overview / AI Mode answers - **Description**: Fetch a dedicated Google AI Overview for a query. Unlike Search Advanced, this endpoint always requests Google AI Mode and returns the generated answer as plain text plus customer-renderable markdown, structured text blocks (paragraphs, headings, lists, equations), cited sources/quotes, and header images when Google produces them. Queries that do not yield a parseable AI Overview after retries return an unbilled 503. This is a separate product from the best-effort ai_overview field on Search Advanced. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Search query sent to Google AI Mode | | `hl` | string | No | Interface language code (e.g. en, de) | | `gl` | string | No | Country code (e.g. us, de) | | `google_domain` | string | No | Google domain (e.g. google.de) | | `uule` | string | No | Encoded location (passed through when provided) | **Example request:** ``` GET https://scrappa.co/api/search-ai-overview?query=how+does+photosynthesis+work&hl=en&gl=us Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_information": { "query_displayed": "how does photosynthesis work", "search_url": "https://www.google.com/search?udm=50&q=how+does+photosynthesis+work&hl=en&gl=us&complete=0&pws=0" }, "ai_overview": { "text_blocks": [ { "type": "paragraph", "snippet": "Photosynthesis is the process plants use to convert light energy into chemical energy.", "snippet_markdown": "Photosynthesis is the process plants use to convert light energy into chemical energy." }, { "type": "heading", "snippet": "The overall equation", "snippet_markdown": "The overall equation" }, { "type": "paragraph", "snippet": "The general balanced equation for photosynthesis is: 6CO\u2082 + 6H\u2082O + Light Energy \u2192 C\u2086H\u2081\u2082O\u2086 + 6O\u2082", "snippet_markdown": "The general balanced equation for photosynthesis is: $6\\text{CO}_{2}+6\\text{H}_{2}\\text{O}+\\text{Light\\ Energy}\\rightarrow \\text{C}_{6}\\text{H}_{12}\\text{O}_{6}+6\\text{O}_{2}$", "snippet_latex": [ "6\\text{CO}_{2}+6\\text{H}_{2}\\text{O}+\\text{Light\\ Energy}\\rightarrow \\text{C}_{6}\\text{H}_{12}\\text{O}_{6}+6\\text{O}_{2}" ] }, { "type": "list", "snippet": "Reactants: Carbon dioxide (CO\u2082) and water (H\u2082O).\nProducts: Glucose (C\u2086H\u2081\u2082O\u2086) and oxygen (O\u2082).", "snippet_markdown": "- **Reactants:** Carbon dioxide ($\\text{CO}_{2}$) and water ($\\text{H}_{2}\\text{O}$).\n- **Products:** Glucose ($\\text{C}_{6}\\text{H}_{12}\\text{O}_{6}$) and oxygen ($\\text{O}_{2}$).", "list": [ { "title": "Reactants:", "snippet": "Carbon dioxide (CO\u2082) and water (H\u2082O).", "snippet_markdown": "Carbon dioxide ($\\text{CO}_{2}$) and water ($\\text{H}_{2}\\text{O}$).", "snippet_latex": [ "\\text{CO}_{2}", "\\text{H}_{2}\\text{O}" ] }, { "title": "Products:", "snippet": "Glucose (C\u2086H\u2081\u2082O\u2086) and oxygen (O\u2082).", "snippet_markdown": "Glucose ($\\text{C}_{6}\\text{H}_{12}\\text{O}_{6}$) and oxygen ($\\text{O}_{2}$).", "snippet_latex": [ "\\text{C}_{6}\\text{H}_{12}\\text{O}_{6}", "\\text{O}_{2}" ] } ] } ], "header_images": [ { "image": "https://www.science-sparks.com/wp-content/uploads/2020/04/Photosynthesis-Diagram-scaled.jpg", "thumbnail": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcPhotosynthesisDiagram", "title": "What is photosynthesis?", "source": "www.science-sparks.com", "link": "https://www.science-sparks.com/what-is-photosynthesis/" } ], "references": [ { "title": "Photosynthesis - National Geographic Education", "link": "https://education.nationalgeographic.org/resource/photosynthesis", "snippet": "Photosynthesis is the process by which plants use sunlight, water, and carbon dioxide to create oxygen and energy.", "source": "National Geographic Society", "index": 0 } ], "quotes": [ { "snippet": "Photosynthesis is the process by which plants use sunlight, water, and carbon dioxide to create oxygen and energy.", "title": "Photosynthesis - National Geographic Education", "source": "National Geographic Society", "link": "https://education.nationalgeographic.org/resource/photosynthesis" } ] }, "text": "Photosynthesis is the process plants use to convert light energy into chemical energy.\nThe overall equation\nThe general balanced equation for photosynthesis is: 6CO\u2082 + 6H\u2082O + Light Energy \u2192 C\u2086H\u2081\u2082O\u2086 + 6O\u2082\nReactants: Carbon dioxide (CO\u2082) and water (H\u2082O).\nProducts: Glucose (C\u2086H\u2081\u2082O\u2086) and oxygen (O\u2082).", "markdown": "Photosynthesis is the process plants use to convert light energy into chemical energy.\n\n### The overall equation\n\nThe general balanced equation for photosynthesis is: $6\\text{CO}_{2}+6\\text{H}_{2}\\text{O}+\\text{Light\\ Energy}\\rightarrow \\text{C}_{6}\\text{H}_{12}\\text{O}_{6}+6\\text{O}_{2}$\n\n- **Reactants:** Carbon dioxide ($\\text{CO}_{2}$) and water ($\\text{H}_{2}\\text{O}$).\n- **Products:** Glucose ($\\text{C}_{6}\\text{H}_{12}\\text{O}_{6}$) and oxygen ($\\text{O}_{2}$).", "service_used": "google" } ``` #### Google Search - **Docs**: https://scrappa.co/docs/google-search-api/search - **Summary**: Search Google - **Description**: Perform a Google search and get structured results using the same reliable Google retrieval path as Search Advanced. gl=us and hl=en are used when omitted. page is 0-based: page=0 is the first page and page=1 is the second; start is the preferred explicit result offset. total_results is Google's estimate when exposed and may be null; organic_results_count is the number of returned organic rows. Scrappa does not impose fixed per-key concurrency or requests-per-minute limits. Transient capacity responses include Retry-After, and failed responses including 503 are never charged. External text is returned as valid UTF-8; malformed byte sequences are replaced with the Unicode replacement character (�), while valid Unicode is preserved. Account balance and recent usage are available from GET /api/account/usage and in the dashboard. YouTube results include raw views/date text plus normalized view_count and publication_age when Google provides them. **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; default: us) | | `cr` | string | No | Restrict results to countries (e.g., countryUS\|countryDE) | | `hl` | string | No | Interface language code (default: en) | | `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 | | `oq` | string | No | Original Google query value, passed through and encoded once in the upstream URL. | | `sclient` | string | No | Google search client identifier, passed through and encoded once in the upstream URL. | | `gs_lp` | string | No | Opaque Google SERP context value, passed through and encoded once in the upstream URL. | | `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 | 0-based page number: 0 is the first page and 1 is the second. Prefer start for new integrations. | | `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 }, "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": [ { "name": "Berlin food guide", "query": "Berlin food guide", "link": "https://www.google.com/search?q=Berlin+food+guide" }, { "name": "Restaurants in Kreuzberg", "query": "restaurants in Kreuzberg", "link": "https://www.google.com/search?q=restaurants+in+Kreuzberg" }, { "name": "Michelin restaurants Berlin", "query": "Michelin restaurants Berlin", "link": "https://www.google.com/search?q=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" } ], "inline_videos": [ { "position": 1, "title": "Adobe Express Brand Kit Tutorial 2026", "link": "https://www.youtube.com/watch?v=example123", "platform": "YouTube", "channel": "XayLi Barclay", "views": "720+ views", "view_count": 720, "date": "4 months ago", "publication_age": "4 months ago" } ], "pagination": { "next": null }, "organic_results_count": 2, "total_results": 428000000, "engine_used": "google", "service_used": "google" } ``` #### Google Search Advanced - **Docs**: https://scrappa.co/docs/google-search-api/google_search_advanced - **Summary**: Rich structured Google SERP extraction - **Description**: Fetch a modern Google SERP 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. gl=us and hl=en are used when omitted. page is 0-based: page=0 is the first page and page=1 is the second; start is the preferred explicit result offset. total_results is Google's estimate when exposed and may be null; organic_results_count is the number of returned organic rows. Scrappa does not impose fixed per-key concurrency or requests-per-minute limits. Transient capacity responses include Retry-After, and failed responses including 503 are never charged. External text is returned as valid UTF-8; malformed byte sequences are replaced with the Unicode replacement character (�), while valid Unicode is preserved. Account balance and recent usage are available from GET /api/account/usage and in the dashboard. Explicit empty SERPs return immediately without provider retries, and tbs and as_qdr date filters use bounded retries. Source links are resolved when Google exposes their destinations; unavailable question source links are omitted. Video cards are returned in inline_videos; YouTube cards include channel, raw views and date text, normalized view_count, and publication_age when Google provides the metadata. AI Overview extraction is best effort: ai_overview is populated only when the module is present in the captured HTML. The endpoint does not wait for asynchronously inserted AI Overviews, make a secondary Google AI Overview request, or expand the module, and no request parameter enables those behaviors. When captured, cited sources are returned in ai_overview.references; null means the module was absent from the captured response, not that Google never displays one for the query. Local-pack-only responses are returned with empty organic_results and remain unbilled; they do not substitute for missing site-filtered results. Responses for a different query and non-definitive responses without usable result modules after retries return an unbilled 503. Local places include an optional website field when Google provides a valid business website action. search_url contains the sanitized Google SERP URL that produced the response. The serp_results collection preserves the DOM order of supported paid cards, local modules, and organic cards. rank_group is the 1-based position within one type; rank_absolute is the 1-based position across those supported types. A multi-place local module occupies one rank_absolute slot, and every nested local_results.places item inherits that rank so clients can merge local and organic results and sort by rank_absolute. **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; default: us) | | `cr` | string | No | Restrict results to countries (e.g., countryUS\|countryDE) | | `hl` | string | No | Interface language code (default: en) | | `lr` | string | No | Restrict results to language (e.g., lang_en) | | `device` | string | No | Device used to fetch Google results: desktop (default), tablet, or mobile. | | `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 (default: 1). Set 0 to allow auto-correction; results for a different query are rejected. | | `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 | 0-based page number: 0 is the first page and 1 is the second. Prefer start for new integrations. | | `amount` | integer | No | Results per page (1-10, may return fewer) | | `lsig` | string | No | Google local listing signature, used with ludocid to target one listing. | | `kgmid` | string | No | Google Knowledge Graph machine ID of the entity to target (e.g. /m/0dr90d). | | `si` | string | No | Opaque Google search context token, passed through unchanged. | | `ibp` | string | No | Opaque Google interface parameter, passed through unchanged. | | `uds` | string | No | Opaque Google filter token from a previous result page, passed through unchanged. | | `oq` | string | No | Original Google query value, passed through and encoded once in the upstream URL. | | `sclient` | string | No | Google search client identifier, passed through and encoded once in the upstream URL. | | `gs_lp` | string | No | Opaque Google SERP context value, passed through and encoded once in the upstream URL. | **Example request:** ``` GET https://scrappa.co/api/search-advanced?query=best+restaurants+in+Berlin&hl=en&gl=de&device=mobile Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_information": { "query_displayed": "best restaurants in Berlin", "total_results": 428000000 }, "search_url": "https://www.google.de/search?q=best+restaurants+in+Berlin&hl=en&gl=de&complete=0&pws=0&nfpr=1", "organic_results": [ { "position": 1, "rank_group": 1, "rank_absolute": 3, "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" } ], "related_questions": [ { "question": "What food is Berlin best known for?", "snippet": "Berlin is known for currywurst, doner kebab, and a large international restaurant scene.", "link": "https://www.example.com/berlin-food-guide" } ], "people_also_search_for": [], "things_to_know": [], "knowledge_graph": null, "see_results_about": null, "twitter_card": null, "local_results": { "places": [ { "position": 1, "rank_absolute": 2, "title": "Example Berlin Bistro", "rating": 4.7, "reviews": 1842, "type": "Restaurant", "address": "Mitte, Berlin", "website": "https://www.example-bistro.de/" } ], "modules": [ { "title": "Places", "place_indexes": [ 0 ], "rank_group": 1, "rank_absolute": 2 } ] }, "local_map": null, "answer_box": null, "ai_overview": null, "ads": [ { "position": 1, "rank_group": 1, "rank_absolute": 1, "title": "Reserve a Berlin restaurant", "link": "https://ads.example.com/berlin-restaurants", "displayed_link": "ads.example.com", "snippet": "Find and reserve a table in Berlin." } ], "top_stories": [], "videos": [], "inline_videos": [ { "position": 1, "title": "Adobe Express Brand Kit Tutorial 2026", "link": "https://www.youtube.com/watch?v=example123", "platform": "YouTube", "channel": "XayLi Barclay", "views": "720+ views", "view_count": 720, "date": "4 months ago", "publication_age": "4 months ago" } ], "inline_images": [], "shopping_results": [], "popular_products": [], "perspectives": [], "events_results": [], "recipes_results": [], "immersive_products": [], "filters": [], "related_searches": [], "refine_this_search": [], "nutrition_information": null, "pagination": [], "serp_results": [ { "type": "paid", "result_index": 0, "rank_group": 1, "rank_absolute": 1 }, { "type": "local_results", "module_index": 0, "rank_group": 1, "rank_absolute": 2 }, { "type": "organic", "result_index": 0, "rank_group": 1, "rank_absolute": 3 } ], "organic_results_count": 1, "total_results": 428000000, "engine_used": "google", "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". YouTube results include views, view_count, date, and publication_age when the active provider supplies that metadata. The people_also_search_for field is a best-effort autocomplete enrichment and may be empty; use Search Autocomplete when suggestions are required. **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" } }, { "position": 2, "title": "Adobe Express Brand Kit Tutorial 2026", "link": "https://www.youtube.com/watch?v=example123", "displayed_link": "youtube.com/watch?v=example123", "snippet": "A step-by-step Adobe Express brand kit tutorial.", "views": "720+ views", "view_count": 720, "date": "4 months ago", "publication_age": "4 months ago" } ], "people_also_search_for": [], "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 Shopping API Search Google Shopping and retrieve normalized product results. #### Google Shopping Search - **Docs**: https://scrappa.co/docs/google-shopping-api/google_shopping - **Summary**: Search products on Google Shopping - **Description**: Search Google Shopping with locale, location, device, pagination, and Shopping filter controls. Treat next_start as the next offset to try, not a guarantee that another page contains results. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `q` | string | Yes | Product search query. | | `gl` | string | No | Two-letter country code. Default: us. | | `hl` | string | No | Two-letter interface language. Default: en. | | `location` | string | No | Location name encoded as a best-effort canonical UULE. Cannot be combined with uule; provide uule directly when exact targeting is required. | | `uule` | string | No | Encoded Google location. Cannot be combined with location. | | `start` | integer | No | Zero-based pagination offset. Default: 0. | | `device` | string | No | desktop, mobile, or tablet. Default: desktop. | | `small_business` | boolean | No | Limit results to small businesses. Cannot be combined with shoprs. | | `shoprs` | string | No | Opaque Shopping filter token returned by Google. Cannot be combined with small_business. | **Example request:** ``` GET https://scrappa.co/api/google/shopping?q=iphone+15&gl=us&hl=en Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "q": "iphone 15", "gl": "us", "hl": "en", "start": 0, "device": "desktop" }, "shopping_results": [ { "position": 1, "title": "Apple iPhone 15", "product_id": "9402654696244930073", "link": "https://www.google.com/shopping/product/9402654696244930073", "source": "Best Buy", "price": "$629.99", "extracted_price": 629.99, "delivery": "Free delivery", "rating": 4.7, "reviews": 32000, "thumbnail": "https://encrypted-tbn3.gstatic.com/shopping?q=tbn:example", "badges": [ "Small business" ] } ], "pagination": { "current_page": 1, "start": 0, "next_start": 10 } } ``` ### 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"), or "auto" to detect the input language | | `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 | | `google_domain` | string | No | Google domain to query (e.g. google.com, google.de). | | `gl` | string | No | Country code for geographic targeting (2 letters, e.g. de). | | `safe` | string | No | SafeSearch: active or off. | | `nfpr` | integer | No | Set to 1 to disable automatic spelling correction, 0 to allow it. | | `filter` | integer | No | Set to 1 to omit near-duplicate results (default), 0 to keep them. | | `page` | integer | No | Page number (starts at 1). | **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": [] } ``` ### Idealista API Search Idealista listings across Spain, Italy, Portugal, and France, including details, filters, maps, agencies, and vacation calendars. #### Idealista Agency - **Docs**: https://scrappa.co/docs/idealista-api/idealista_agency - **Summary**: Agency microsite profile - **Description**: Anonymous agency profile. Agency stock is search with microsite_short_name. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | es, it, pt, or fr. | | `microsite_short_name` | string | Yes | Agency short name, for example clikalia. | **Example request:** ``` GET https://scrappa.co/api/idealista/agency?country=esµsite_short_name=clikalia Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "commercialName": "Clikalia Espa\u00f1a", "total": 576 } } ``` #### Idealista Deeplink Build - **Docs**: https://scrappa.co/docs/idealista-api/idealista_deeplink_build - **Summary**: Build a search web link - **Description**: Returns {web_link} as a string. The link is not fetched. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | es, it, pt, or fr. | | `location_id` | string | Yes | Idealista location id. | **Example request:** ``` GET https://scrappa.co/api/idealista/deeplink/build?country=es&location_id=0-EU-ES-28&operation=sale&property_type=homes Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "web_link": "https://www.idealista.com/venta-viviendas/madrid-provincia/" } } ``` #### Idealista Deeplink Parse - **Docs**: https://scrappa.co/docs/idealista-api/idealista_deeplink_parse - **Summary**: Parse a search URL into filters - **Description**: Parses a search URL. Listing /inmueble/{id} URLs return 422. The URL is not fetched. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | es, it, pt, or fr. | | `url` | string | Yes | Idealista search URL. | **Example request:** ``` GET https://scrappa.co/api/idealista/deeplink/parse?country=es&url=https%3A%2F%2Fwww.idealista.com%2Fventa-viviendas%2Fmadrid-madrid%2F Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "filter": [], "target": "search" } } ``` #### Idealista Filters - **Docs**: https://scrappa.co/docs/idealista-api/idealista_filters - **Summary**: Live filter schema and shortcut chips - **Description**: Returns schema blocks plus shortcut chips. Apply-filter keys are chalet, currentOccupationType, and auction — not Kotlin typology constants. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | es, it, pt, or fr. | | `operation` | string | No | sale or rent. | | `property_type` | string | No | Live typology enum. | | `location_id` | string | Yes | Idealista location id. | **Example request:** ``` GET https://scrappa.co/api/idealista/filters?country=es&operation=sale&property_type=homes&location_id=0-EU-ES-28 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "blocks": [ { "key": "price" } ], "shortcuts_tabs": [] } } ``` #### Idealista Geo Reach - **Docs**: https://scrappa.co/docs/idealista-api/idealista_map_georeach - **Summary**: Nearby new-build reach search - **Description**: JSON search kernel for nearby new developments. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | es, it, pt, or fr. | | `location_id` | string | No | Idealista location id. | **Example request:** ``` GET https://scrappa.co/api/idealista/map/georeach?country=es&operation=sale&property_type=newDevelopments&location_id=0-EU-ES-28 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "elementList": [] } } ``` #### Idealista Home Rails - **Docs**: https://scrappa.co/docs/idealista-api/idealista_home - **Summary**: Home-screen rails - **Description**: Thin home rails with ad and mainPicture cards. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | es, it, pt, or fr. | **Example request:** ``` GET https://scrappa.co/api/idealista/home?country=es Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": [ { "ad": [], "mainPicture": "" } ] } ``` #### Idealista Listing - **Docs**: https://scrappa.co/docs/idealista-api/idealista_listing - **Summary**: Rich listing detail with optional includes - **Description**: Returns the full listing body. include=multimedia,comment,stats,recommendation merges those families. Vacation listings accept typology=vacationRentals. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | es, it, pt, or fr. | | `ad_id` | string | Yes | Listing identifier from search. | | `include` | string | No | Comma-separated: multimedia, comment, stats, recommendation. | **Example request:** ``` GET https://scrappa.co/api/idealista/listing?country=es&ad_id=110308026 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "adid": 110308026, "price": 250000, "multimedia": [] } } ``` #### Idealista Listing Multimedia - **Docs**: https://scrappa.co/docs/idealista-api/idealista_listing_multimedia - **Summary**: Listing photos and video URLs - **Description**: Standalone multimedia for a listing. Media URLs are opaque and should be re-read from this or the listing endpoint. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | es, it, pt, or fr. | | `ad_id` | string | Yes | Listing identifier. | **Example request:** ``` GET https://scrappa.co/api/idealista/listing/multimedia?country=es&ad_id=110308026 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "images": [], "videos": [] } } ``` #### Idealista Listing Stats - **Docs**: https://scrappa.co/docs/idealista-api/idealista_listing_stats - **Summary**: Views, favorites, and contact counts - **Description**: Returns views, favorites, contactMails, and sentToFriend for a listing. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | es, it, pt, or fr. | | `ad_id` | string | Yes | Listing identifier. | **Example request:** ``` GET https://scrappa.co/api/idealista/listing/stats?country=es&ad_id=110308026 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "views": 120, "favorites": 8, "contactMails": 3, "sentToFriend": 1 } } ``` #### Idealista Location Polygon - **Docs**: https://scrappa.co/docs/idealista-api/idealista_location - **Summary**: GeoJSON polygon for a location id - **Description**: Returns the location polygon and zoneLevelId for a location_id from the locations endpoint. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | es, it, pt, or fr. | | `location_id` | string | Yes | Idealista location id. | **Example request:** ``` GET https://scrappa.co/api/idealista/location?country=es&location_id=0-EU-ES-28 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "zoneLevelId": 3, "geometry": { "type": "Polygon" } } } ``` #### Idealista Locations - **Docs**: https://scrappa.co/docs/idealista-api/idealista_locations - **Summary**: Suggest, reverse, vacational, picker, or smart location lookup - **Description**: mode=suggest|reverse|vacational|picker|smart. Vacational hits carry rentaliaCode and no locationId. Smart search uses searchText. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | es, it, pt, or fr. | | `mode` | string | No | suggest, reverse, vacational, picker, or smart. | | `prefix` | string | No | Text for suggest, vacational, and smart. | | `coordinates` | string | No | lat,lon for reverse. | **Example request:** ``` GET https://scrappa.co/api/idealista/locations?country=es&mode=suggest&prefix=Madrid Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": [ { "locationId": "0-EU-ES-28-07-001-079", "name": "Madrid" } ] } ``` #### Idealista Map Search - **Docs**: https://scrappa.co/docs/idealista-api/idealista_map_search - **Summary**: Map listings or price pins - **Description**: mode=listings returns the search envelope. mode=pins returns the thin ads overlay. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | es, it, pt, or fr. | | `mode` | string | No | listings or pins. | | `location_id` | string | No | Idealista location id. | **Example request:** ``` GET https://scrappa.co/api/idealista/map/search?country=es&mode=listings&property_type=homes&operation=sale&location_id=0-EU-ES-28 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "total": 4977, "elementList": [] } } ``` #### Idealista Map Tiles - **Docs**: https://scrappa.co/docs/idealista-api/idealista_map_tiles - **Summary**: Map tile as base64 PNG JSON - **Description**: Returns {content_type, data} where data is a base64 PNG. Prefer this over static maps. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | es, it, pt, or fr. | | `z` | integer | Yes | Tile zoom. | | `x` | integer | Yes | Tile X. | | `y` | integer | Yes | Tile Y. | **Example request:** ``` GET https://scrappa.co/api/idealista/map/tiles?country=es&z=12&x=2005&y=1546&property_type=homes&operation=sale&location_id=0-EU-ES-28 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "content_type": "image/png", "data": "" } } ``` #### Idealista Map Zone - **Docs**: https://scrappa.co/docs/idealista-api/idealista_map_zoi - **Summary**: Official zone MultiPolygon - **Description**: Returns a MultiPolygon for a zone slug. Unknown slugs return 404. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | es, it, pt, or fr. | | `slug` | string | Yes | Zone slug such as plaza-chamberi-madrid-madrid. | **Example request:** ``` GET https://scrappa.co/api/idealista/map/zoi?country=es&slug=plaza-chamberi-madrid-madrid Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "type": "MultiPolygon" } } ``` #### Idealista Multizone - **Docs**: https://scrappa.co/docs/idealista-api/idealista_map_multizone - **Summary**: Multizone configuration, minimaps, and overlay tree - **Description**: Returns configuration, minimaps, and the overlay tree. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | es, it, pt, or fr. | **Example request:** ``` GET https://scrappa.co/api/idealista/map/multizone?country=es Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "configuration": [], "minimaps": [], "overlay": [] } } ``` #### Idealista News - **Docs**: https://scrappa.co/docs/idealista-api/idealista_news - **Summary**: Latest Idealista news items - **Description**: Thin news chrome for the selected market. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | es, it, pt, or fr. | **Example request:** ``` GET https://scrappa.co/api/idealista/news?country=es Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": [ { "title": "News item" } ] } ``` #### Idealista Phone Prefixes - **Docs**: https://scrappa.co/docs/idealista-api/idealista_phones_prefixes - **Summary**: Phone prefix reference data - **Description**: Functional reference data. language is required. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | es, it, pt, or fr. | | `language` | string | Yes | Language for labels, for example es. | **Example request:** ``` GET https://scrappa.co/api/idealista/phones/prefixes?country=es&language=es Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": [ { "prefix": "+34" } ] } ``` #### Idealista Polygon Simplify - **Docs**: https://scrappa.co/docs/idealista-api/idealista_map_simplify - **Summary**: Simplify a GeoJSON shape for search - **Description**: POST a GeoJSON shape. Returns {geojson} that can be sent as shape on search. A plain lat,lon string is rejected. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | es, it, pt, or fr. | | `shape` | object | Yes | GeoJSON object or JSON string. | **Example request:** ``` GET https://scrappa.co/api/idealista/map/simplify?country=es Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "geojson": { "type": "Polygon" } } } ``` #### Idealista Search - **Docs**: https://scrappa.co/docs/idealista-api/idealista_search - **Summary**: Search Idealista listings by typology and location - **Description**: Search the live Idealista catalog. property_type accepts homes, newDevelopments, bedrooms, offices, premises, transfers, buildings, storageRooms, garages, vacationRentals, luxury, and lands. Country routes the request to ES, IT, PT, or FR. Agency stock uses microsite_short_name. Draw-area search: simplify a polygon first, then pass shape. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | Market: es, it, pt, or fr. Default es. | | `operation` | string | No | sale or rent. Room stock uses bedrooms + rent. | | `property_type` | string | No | Live typology enum. Rejected aliases: rooms, warehouses, chalets, countryhouses, vacationRental. | | `location_id` | string | No | Idealista location id, for example 0-EU-ES-28. | | `center` | string | No | lat,lon for near-me search. | | `distance` | integer | No | Radius in meters when using center. | | `max_items` | integer | No | Page size honored by origin, 1-5. | | `num_page` | integer | No | 1-based page number. | | `microsite_short_name` | string | No | Anonymous agency stock filter, for example clikalia. | | `chalet` | boolean | No | Apply-filter key. Send true on homes. | | `current_occupation_type` | string | No | free, bareOwnership, tenanted, illegallyOccupied, or viager. | | `auction` | string | No | IT only: onlyAuctions or excludeAuctions. | **Example request:** ``` GET https://scrappa.co/api/idealista/search?country=es&operation=sale&property_type=homes&location_id=0-EU-ES-28&max_items=2 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "total": 30190, "elementList": [ { "propertyCode": "110308026", "price": 250000 } ] } } ``` #### Idealista Short URIs - **Docs**: https://scrappa.co/docs/idealista-api/idealista_shorturis - **Summary**: Encode or decode Idealista short URIs - **Description**: direction=encode maps a location to a shortUri. direction=decode reverses shortUris back to locationId. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | es, it, pt, or fr. | | `direction` | string | No | encode or decode. | | `location_id` | string | No | Required for encode. | **Example request:** ``` GET https://scrappa.co/api/idealista/shorturis?country=es&direction=encode&location_id=0-EU-ES-28&operation=sale&property_type=homes Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "locations": [ { "shortUri": "bd4" } ] } } ``` #### Idealista Static Map - **Docs**: https://scrappa.co/docs/idealista-api/idealista_map_static - **Summary**: Static map URL for a location - **Description**: Returns {map_url}. Prefer pins and tiles. The URL is a string, not a scrape target. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | es, it, pt, or fr. | | `location_id` | string | Yes | Idealista location id. | **Example request:** ``` GET https://scrappa.co/api/idealista/map/static?country=es&location_id=0-EU-ES-28 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "map_url": "https://maps.example/static" } } ``` #### Idealista Vacation Calendar - **Docs**: https://scrappa.co/docs/idealista-api/idealista_vacation_calendar - **Summary**: Stay calendar for a vacation listing - **Description**: Returns unavailable dates. include=verify_dates,rent_breakdown adds those extras. This is the stay calendar, not room-availability chrome. Complementary to Rentalia. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | es, it, pt, or fr. | | `ad_id` | string | Yes | Vacation listing id. | | `include` | string | No | verify_dates and/or rent_breakdown. | **Example request:** ``` GET https://scrappa.co/api/idealista/vacation/calendar?country=es&ad_id=978257 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "datesNotAvailable": [], "maxMonths": 12 } } ``` ### 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. For tenant-network listings, cold_rent and warm_rent use the upper bound of the advertised estimate; cold_rent_formatted and warm_rent_formatted preserve the original text. is_tenant_network identifies these listings. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | The property ID from Immobilienscout24 (e.g., "164121830") | | `id` | string | No | ImmobilienScout24 property ID (digits only). | **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", "is_tenant_network": false, "price": { "cold_rent": 2000, "warm_rent": 2440, "cold_rent_formatted": "2.000 \u20ac", "warm_rent_formatted": "2.440 \u20ac", "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. Apartment rentals include tenant-network listings (Nachvermietung). Numeric prices use the upper bound of rental estimates; price_formatted preserves the advertised range. is_tenant_network identifies these listings. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `location` | string | Yes | City name, postal code, or geocode (e.g., "Berlin", "10115", "1276003001"). City/postcode combinations such as Berlin 12355 search the first matching district. | | `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, "is_tenant_network": false, "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 Audio Reels - **Docs**: https://scrappa.co/docs/instagram-api/instagram_audio_reels - **Summary**: Get Instagram reels that use an audio track - **Description**: Retrieve the public Instagram reels that use a given audio track, with pagination support. The audio_id is the numeric id from the public audio page URL (instagram.com/reels/audio/{audio_id}/). Returns reel details including video URLs, captions, play counts, and engagement metrics. Note: Instagram strips the track title/artist metadata for logged-out requests, so this endpoint returns the reels only. A completed lookup costs one credit, including a definitive not-found result, because every lookup uses costly dedicated Instagram proxies. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `audio_id` | string | Yes | Numeric Instagram audio ID (from instagram.com/reels/audio/{audio_id}/) | | `max_id` | string | No | Pagination cursor from previous response (next_max_id) | **Example request:** ``` GET https://scrappa.co/api/instagram/audio/reels?audio_id=1392969992841787 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "found": true, "audio_id": "1392969992841787", "reels": [ { "id": "3960907739614247380", "shortcode": "DbXRYtWuLsf", "media_type": "video", "caption": "Reel caption text...", "hashtags": [ "music" ], "taken_at": "2026-08-01T10:30:00+00:00", "like_count": 3200, "comment_count": 45, "play_count": 108899, "media": [ { "type": "video", "thumbnail_url": "https://...", "video_url": "https://..." } ], "location": null, "author": { "id": "123456789", "username": "creatorname" }, "permalink": "https://www.instagram.com/p/DbXRYtWuLsf/" } ], "reels_count": 12, "more_available": true, "next_max_id": "Gsa-7MXr6uKi123Cpfi06Nii2m3cya60oZLD722u" } ``` #### Instagram Basic Profile - **Docs**: https://scrappa.co/docs/instagram-api/instagram_user_basic - **Summary**: Get a basic Instagram profile by numeric user ID - **Description**: Retrieve the basic public Instagram profile for a numeric user ID. This lightweight lookup returns the profile identity (username, name, profile picture) and, when Instagram provides them, follower and media counts. Use the full /v2/instagram/user endpoint for complete profile data including biography and bio links. A completed lookup costs one credit, including a definitive not-found result, because every lookup uses costly dedicated Instagram proxies. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `user_id` | string | Yes | Numeric Instagram user ID | **Example request:** ``` GET https://scrappa.co/api/instagram/user/basic?user_id=787132 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "found": true, "user_id": "787132", "user": { "id": "787132", "username": "natgeo", "full_name": "National Geographic", "profile_pic_url": "https://...", "profile_pic_url_hd": "https://...", "is_verified": true, "is_private": false, "follower_count": null, "following_count": null, "media_count": null } } ``` #### Instagram Hashtag Search - **Docs**: https://scrappa.co/docs/instagram-api/instagram_hashtag_search - **Summary**: Search Instagram hashtags by keyword - **Description**: Search Instagram hashtags by keyword and get matching hashtags with their post counts. Returns up to ~55 hashtag suggestions in a single response (Instagram does not paginate this surface). An empty result list is a definitive answer: no hashtags match the keyword. A completed lookup costs one credit because every lookup uses costly dedicated Instagram proxies. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `q` | string | Yes | Search keyword (e.g. nature) | **Example request:** ``` GET https://scrappa.co/api/instagram/hashtags/search?q=nature Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "query": "nature", "hashtags": [ { "id": "17841562498105353", "name": "nature", "media_count": 858237927, "formatted_media_count": "858M", "search_result_subtitle": "858M posts" } ], "hashtags_count": 55 } ``` #### Instagram Popular Search - **Docs**: https://scrappa.co/docs/instagram-api/instagram_popular_search - **Summary**: Explore an Instagram topic: media, related keywords, description - **Description**: Explore an Instagram topic by keyword and get the curated popular media for it, plus related keyword suggestions and the topic description. Multi-word keywords are supported (e.g. green nature). Returns up to ~12 media items in a single response (Instagram does not paginate this surface on the public web). A confirmed missing topic returns found=false and empty media. A completed lookup costs one credit, including a confirmed not-found result or a valid empty result. If Instagram is unavailable or the lookup cannot be confirmed, the API returns retryable HTTP 503 and does not consume credits. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `q` | string | Yes | Topic keyword (e.g. nature, green nature) | **Example request:** ``` GET https://scrappa.co/api/instagram/search/popular?q=nature Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "found": true, "query": "nature", "media": [ { "id": "3865589231042854730", "shortcode": "DMCfmHttFvu", "media_type": "video", "caption": "Reel caption text...", "play_count": 2450000, "video_url": "https://...", "thumbnail_url": "https://...", "author": { "id": "123456789", "username": "creatorname", "profile_pic_url": "https://...", "is_verified": false }, "permalink": "https://www.instagram.com/reel/DMCfmHttFvu/" } ], "media_count": 12, "related_keywords": [ "nature photography", "nature lover", "nature beauty" ], "description": "Nature, in the broadest sense, is the physical world or universe..." } ``` #### 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. A completed lookup costs one credit, including a definitive not-found result, because every lookup uses costly dedicated Instagram proxies. **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, "found": 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 Post Comments - **Docs**: https://scrappa.co/docs/instagram-api/instagram_post_comments - **Summary**: Get comments of an Instagram post or reel - **Description**: Retrieve the public top-level comments of an Instagram post or reel by shortcode, with pagination support (pass next_max_id as max_id for the next page). Returns comment text, timestamps, like counts, and author info (username, profile picture, verified flag). Note: Instagram does not expose reply threads on the public surface, so only top-level comments are returned. A completed lookup costs one credit, including a definitive not-found result, because every lookup uses costly dedicated Instagram proxies. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `shortcode` | string | Yes | Instagram post/reel shortcode (from the /p/ or /reel/ URL, e.g. BrGHMHIF8Kz) | | `max_id` | string | No | Pagination cursor from previous response (next_max_id) | **Example request:** ``` GET https://scrappa.co/api/instagram/post/comments?shortcode=BrGHMHIF8Kz Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "found": true, "shortcode": "BrGHMHIF8Kz", "comments": [ { "id": "17987345123456789", "text": "Love this!", "taken_at": "2018-09-06T17:20:48+00:00", "taken_at_timestamp": 1536254448, "like_count": 120, "author": { "id": "12897316531", "username": "commentername", "profile_pic_url": "https://...", "is_verified": false } } ], "comments_count": 25, "more_available": true, "next_max_id": "QVFBUGx..." } ``` #### 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, profile picture, and available story highlights, reel presence, text-post app badge, and account-status fields. A completed lookup costs one credit, including a definitive not-found result, because every lookup uses costly dedicated Instagram proxies. Use the separate /user/posts endpoint to fetch the user's posts. The media_count field is the total post count when an exact count is available; unavailable fields may be null. New profile extras are null when not supplied. Existing is_business_account and is_professional_account fields default to false when not supplied. Highlights are a snapshot: more_available indicates additional highlights, and next_cursor is informational; this endpoint does not accept a highlights cursor. Login-required failures do not consume credits. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `username` | string | Yes | Instagram username (without @) | **Example request:** ``` GET https://scrappa.co/api/v2/instagram/user?username=natgeo Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "found": 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": [], "has_any_clips": true, "is_memorialized": false, "is_unpublished": false, "text_post_app_badge_label": "natgeo", "show_text_post_app_badge": true, "highlights": { "items": [ { "id": "18220017724061811", "title": "Highlights", "cover_url": "https://example.com/highlight.jpg", "owner_username": "natgeo" } ], "more_available": false, "next_cursor": null } } } ``` #### Instagram Profile Embed - **Docs**: https://scrappa.co/docs/instagram-api/instagram_user_embed - **Summary**: Get the embeddable HTML for an Instagram profile - **Description**: Retrieve the official embeddable HTML page Instagram serves for a public profile, ready to drop into an iframe. A completed lookup costs one credit, including a definitive not-found result, because every lookup uses costly dedicated Instagram proxies. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `username` | string | Yes | Instagram username (without @) | **Example request:** ``` GET https://scrappa.co/api/instagram/user/embed?username=natgeo Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "found": true, "username": "natgeo", "embed_url": "https://www.instagram.com/natgeo/embed/", "embed_html": "..." } ``` #### Instagram Trending Reels - **Docs**: https://scrappa.co/docs/instagram-api/instagram_trending_reels - **Summary**: Get currently trending Instagram reels - **Description**: Retrieve the reels currently trending on Instagram, with captions, video URLs, play/like/comment counts, and author info. Returns a snapshot of the trending feed (Instagram does not paginate this surface on the public web). A completed lookup costs one credit because every lookup uses costly dedicated Instagram proxies. **Example request:** ``` GET https://scrappa.co/api/instagram/reels/trending Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "reels": [ { "id": "3961567952880363552", "shortcode": "Db6URBZAWgg", "media_type": "video", "caption": "Reel caption text...", "taken_at": "2026-08-10T08:15:00+00:00", "taken_at_timestamp": 1786347300, "like_count": 15200, "comment_count": 230, "play_count": 450000, "has_audio": true, "video_url": "https://...", "thumbnail_url": "https://...", "author": { "id": "123456789", "username": "creatorname", "profile_pic_url": "https://...", "is_verified": true }, "permalink": "https://www.instagram.com/reel/Db6URBZAWgg/" } ], "reels_count": 8, "more_available": false, "next_max_id": null } ``` #### 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. A completed lookup costs one credit, including a definitive not-found result, because every lookup uses costly dedicated Instagram proxies. **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, "found": 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..." } ``` #### Instagram User Reels - **Docs**: https://scrappa.co/docs/instagram-api/instagram_user_reels - **Summary**: Get Instagram reels of a user - **Description**: Retrieve the public Instagram reels of a user with pagination support. Accepts either the username (resolved to the numeric user id internally) or the numeric user id directly. Returns reel details including video URLs, captions, play/view counts, engagement metrics, and a pagination cursor for fetching more reels. A completed lookup costs one credit, including a definitive not-found result, because every lookup uses costly dedicated Instagram proxies. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `username` | string | No | Instagram username (without @). Required when user_id is not provided. | | `user_id` | string | No | Numeric Instagram user ID. Required when username is not provided. | | `max_id` | string | No | Pagination cursor from previous response (next_max_id) | **Example request:** ``` GET https://scrappa.co/api/instagram/user/reels?username=natgeo Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "found": true, "user_id": "787132", "username": "natgeo", "reels": [ { "id": "3960907739614247380", "shortcode": "Db3-Jp3zXnU", "media_type": "video", "caption": "Reel caption text...", "hashtags": [ "nature" ], "taken_at": "2026-08-01T10:30:00+00:00", "like_count": 52000, "comment_count": 800, "play_count": 1200000, "media": [ { "type": "video", "thumbnail_url": "https://...", "video_url": "https://..." } ], "location": null, "author": { "id": "787132", "username": "natgeo" }, "permalink": "https://www.instagram.com/natgeo/p/Db3-Jp3zXnU/" } ], "reels_count": 12, "more_available": true, "next_max_id": "QVFEMWpkZH..." } ``` #### Instagram User Tagged Posts - **Docs**: https://scrappa.co/docs/instagram-api/instagram_user_tagged_posts - **Summary**: Get Instagram posts a user is tagged in - **Description**: Retrieve the public Instagram posts a user is tagged in, with pagination support. Accepts either the username (resolved to the numeric user id internally) or the numeric user id directly. Returns post details including media URLs, captions, and engagement metrics. Note: Instagram returns only the post author's numeric id on this endpoint — resolve author details with the /user/basic endpoint. A completed lookup costs one credit, including a definitive not-found result, because every lookup uses costly dedicated Instagram proxies. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `username` | string | No | Instagram username (without @). Required when user_id is not provided. | | `user_id` | string | No | Numeric Instagram user ID. Required when username is not provided. | | `max_id` | string | No | Pagination cursor from previous response (next_max_id) | **Example request:** ``` GET https://scrappa.co/api/instagram/user/tagged-posts?username=natgeo Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "found": true, "user_id": "787132", "username": "natgeo", "posts": [ { "id": "1929261108986102451", "shortcode": "BrGHMHIF8Kz", "media_type": "image", "caption": "Vardzia is a cave monastery site located in southern Georgia...", "hashtags": [ "georgia", "exploregeorgia" ], "taken_at": null, "like_count": 14030, "comment_count": 581, "play_count": null, "media": [ { "type": "image", "thumbnail_url": "https://..." } ], "location": null, "author": { "id": "429173", "username": null }, "permalink": "https://www.instagram.com/p/BrGHMHIF8Kz/" } ], "posts_count": 12, "more_available": true, "next_max_id": "1928051354388873282" } ``` ### 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 reviews include Jameda's authoritative numeric rating when present and a positive/negative sentiment when Jameda exposes enough information to classify it. Use sentiment=negative for the facility's negative review feed. **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") | | `sentiment` | string | No | Filter facility reviews by Jameda sentiment: positive or negative | | `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. | | `query` | string | No | Location text to autocomplete (1-100 characters). Required unless q is supplied. | **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. | | `query` | string | No | Service text to autocomplete (1-100 characters). Required unless q is supplied. | **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" } } ``` ### KAYAK API Search qualified live travel data, indexed travel intelligence, and public reference collections. #### KAYAK Airline Directory - **Docs**: https://scrappa.co/docs/kayak-api/kayak_reference_airlines - **Summary**: Return the complete cached public airline directory. - **Description**: Return the complete cached public airline directory. **Example request:** ``` GET https://scrappa.co/api/kayak/reference/airlines Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "operation": "reference.airlines", "data": { "results": [], "search_state": [], "warnings": [], "provenance": { "provider": "KAYAK", "freshness": "live" }, "source_data": { "kayak": [] } } } ``` #### KAYAK Airport Flight Board - **Docs**: https://scrappa.co/docs/kayak-api/kayak_flight_tracker_airport - **Summary**: Return the qualified airport arrivals or departures board. - **Description**: Return the qualified airport arrivals or departures board. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `origin` | string | Yes | See the endpoint contract for the qualified value format and supported range. | | `date_time` | string | Yes | See the endpoint contract for the qualified value format and supported range. | | `arrivals` | boolean | No | See the endpoint contract for the qualified value format and supported range. | **Example request:** ``` GET https://scrappa.co/api/kayak/flight-tracker/airport?origin=SFO&date_time=2026-09-17T09%3A00%3A00 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "operation": "flight-tracker.airport", "data": { "results": [], "search_state": [], "warnings": [], "provenance": { "provider": "KAYAK", "freshness": "live" }, "source_data": { "kayak": [] } } } ``` #### KAYAK Country Directory - **Docs**: https://scrappa.co/docs/kayak-api/kayak_reference_countries - **Summary**: Return the complete cached public country dictionary. - **Description**: Return the complete cached public country dictionary. **Example request:** ``` GET https://scrappa.co/api/kayak/reference/countries Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "operation": "reference.countries", "data": { "results": [], "search_state": [], "warnings": [], "provenance": { "provider": "KAYAK", "freshness": "live" }, "source_data": { "kayak": [] } } } ``` #### KAYAK Cruise Sailings - **Docs**: https://scrappa.co/docs/kayak-api/kayak_cruises_sailings - **Summary**: Search qualified ocean or river sailings with proven filters and one-based pagination. - **Description**: Search qualified ocean or river sailings with proven filters and one-based pagination. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `min_nights` | number | No | See the endpoint contract for the qualified value format and supported range. | | `adults` | number | No | See the endpoint contract for the qualified value format and supported range. | | `children` | number | No | See the endpoint contract for the qualified value format and supported range. | | `page` | number | No | See the endpoint contract for the qualified value format and supported range. | | `sort` | string | No | See the endpoint contract for the qualified value format and supported range. | | `sort_order` | string | No | See the endpoint contract for the qualified value format and supported range. | | `product_type` | string | No | See the endpoint contract for the qualified value format and supported range. | | `include_deals` | boolean | No | See the endpoint contract for the qualified value format and supported range. | | `include_unavailable` | boolean | No | See the endpoint contract for the qualified value format and supported range. | **Example request:** ``` GET https://scrappa.co/api/kayak/cruises/sailings Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "operation": "cruises.sailings", "data": { "results": [], "search_state": [], "warnings": [], "provenance": { "provider": "KAYAK", "freshness": "live" }, "source_data": { "kayak": [] } } } ``` #### KAYAK Currency Directory - **Docs**: https://scrappa.co/docs/kayak-api/kayak_reference_currencies - **Summary**: Return the complete cached public currency dictionary. - **Description**: Return the complete cached public currency dictionary. **Example request:** ``` GET https://scrappa.co/api/kayak/reference/currencies Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "operation": "reference.currencies", "data": { "results": [], "search_state": [], "warnings": [], "provenance": { "provider": "KAYAK", "freshness": "live" }, "source_data": { "kayak": [] } } } ``` #### KAYAK Direct Routes - **Docs**: https://scrappa.co/docs/kayak-api/kayak_direct_routes - **Summary**: Return direct-route and schedule data for the proven default-origin behavior. - **Description**: Return direct-route and schedule data for the proven default-origin behavior. **Example request:** ``` GET https://scrappa.co/api/kayak/direct/routes Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "operation": "direct.routes", "data": { "results": [], "search_state": [], "warnings": [], "provenance": { "provider": "KAYAK", "freshness": "live" }, "source_data": { "kayak": [] } } } ``` #### KAYAK Explore Destinations - **Docs**: https://scrappa.co/docs/kayak-api/kayak_explore_destinations - **Summary**: Return live destination ideas within the qualified dates, bounds, stops, and duration inputs. - **Description**: Return live destination ideas within the qualified dates, bounds, stops, and duration inputs. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `origin` | string | Yes | See the endpoint contract for the qualified value format and supported range. | | `departure_from` | string | Yes | See the endpoint contract for the qualified value format and supported range. | | `departure_to` | string | Yes | See the endpoint contract for the qualified value format and supported range. | | `return_from` | string | Yes | See the endpoint contract for the qualified value format and supported range. | | `return_to` | string | Yes | See the endpoint contract for the qualified value format and supported range. | | `min_days` | number | No | See the endpoint contract for the qualified value format and supported range. | | `max_days` | number | No | See the endpoint contract for the qualified value format and supported range. | | `stops` | number | No | See the endpoint contract for the qualified value format and supported range. | | `north_east_lat` | number | Yes | See the endpoint contract for the qualified value format and supported range. | | `north_east_lng` | number | Yes | See the endpoint contract for the qualified value format and supported range. | | `south_west_lat` | number | Yes | See the endpoint contract for the qualified value format and supported range. | | `south_west_lng` | number | Yes | See the endpoint contract for the qualified value format and supported range. | **Example request:** ``` GET https://scrappa.co/api/kayak/explore/destinations?origin=ICT&departure_from=2026-10-16&departure_to=2026-11-15&return_from=2026-10-17&return_to=2026-12-15&north_east_lat=43.12&north_east_lng=-81.81&south_west_lat=31.75&south_west_lng=-113.06 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "operation": "explore.destinations", "data": { "results": [], "search_state": [], "warnings": [], "provenance": { "provider": "KAYAK", "freshness": "live" }, "source_data": { "kayak": [] } } } ``` #### KAYAK Fee Directory - **Docs**: https://scrappa.co/docs/kayak-api/kayak_reference_fees - **Summary**: Return the complete cached public fee dictionary. - **Description**: Return the complete cached public fee dictionary. **Example request:** ``` GET https://scrappa.co/api/kayak/reference/fees Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "operation": "reference.fees", "data": { "results": [], "search_state": [], "warnings": [], "provenance": { "provider": "KAYAK", "freshness": "live" }, "source_data": { "kayak": [] } } } ``` #### KAYAK Flight Price Predictions - **Docs**: https://scrappa.co/docs/kayak-api/kayak_best_time_flight_price_predictions - **Summary**: Return route flight-price predictions with their source date windows. - **Description**: Return route flight-price predictions with their source date windows. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `origin` | string | Yes | See the endpoint contract for the qualified value format and supported range. | | `destination` | string | Yes | See the endpoint contract for the qualified value format and supported range. | **Example request:** ``` GET https://scrappa.co/api/kayak/best-time/flight-price-predictions?origin=ICT&destination=LAS Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "operation": "best-time.flight-price-predictions", "data": { "results": [], "search_state": [], "warnings": [], "provenance": { "provider": "KAYAK", "freshness": "live" }, "source_data": { "kayak": [] } } } ``` #### KAYAK Indexed Car Insights - **Docs**: https://scrappa.co/docs/kayak-api/kayak_cars_insights - **Summary**: Return indexed vehicle classes, agencies, reviews, deal summaries, and market charts. - **Description**: Return indexed vehicle classes, agencies, reviews, deal summaries, and market charts. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `path` | string | Yes | See the endpoint contract for the qualified value format and supported range. | **Example request:** ``` GET https://scrappa.co/api/kayak/cars/insights?path=%2FLos-Angeles-Car-Rentals.16078.cars.ksp Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "operation": "cars.insights", "data": { "results": [], "search_state": [], "warnings": [], "provenance": { "provider": "KAYAK", "freshness": "live" }, "source_data": { "kayak": [] } } } ``` #### KAYAK Live Car Search - **Docs**: https://scrappa.co/docs/kayak-api/kayak_cars_search - **Summary**: Search live car offers for the qualified airport, date, time, sort, and price inputs. - **Description**: Search live car offers for the qualified airport, date, time, sort, and price inputs. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `pickup` | string | Yes | See the endpoint contract for the qualified value format and supported range. | | `pickup_date` | string | Yes | See the endpoint contract for the qualified value format and supported range. | | `dropoff_date` | string | Yes | See the endpoint contract for the qualified value format and supported range. | | `pickup_hour` | number | No | See the endpoint contract for the qualified value format and supported range. | | `dropoff_hour` | number | No | See the endpoint contract for the qualified value format and supported range. | | `sort` | string | No | See the endpoint contract for the qualified value format and supported range. | | `price_mode` | string | No | See the endpoint contract for the qualified value format and supported range. | **Example request:** ``` GET https://scrappa.co/api/kayak/cars/search?pickup=LAS&pickup_date=2026-10-31&dropoff_date=2026-11-04 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "operation": "cars.search", "data": { "results": [], "search_state": [], "warnings": [], "provenance": { "provider": "KAYAK", "freshness": "live" }, "source_data": { "kayak": [] } } } ``` #### KAYAK Live Package Search - **Docs**: https://scrappa.co/docs/kayak-api/kayak_packages_search - **Summary**: Search qualified flight-and-stay package inventory. - **Description**: Search qualified flight-and-stay package inventory. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `destination` | string | Yes | See the endpoint contract for the qualified value format and supported range. | | `origin` | string | Yes | See the endpoint contract for the qualified value format and supported range. | | `departure_date` | string | Yes | See the endpoint contract for the qualified value format and supported range. | | `return_date` | string | Yes | See the endpoint contract for the qualified value format and supported range. | | `adults` | number | No | See the endpoint contract for the qualified value format and supported range. | | `child_ages` | array | No | See the endpoint contract for the qualified value format and supported range. | | `duration` | string | No | See the endpoint contract for the qualified value format and supported range. | | `price_mode` | string | No | See the endpoint contract for the qualified value format and supported range. | | `sort` | string | No | See the endpoint contract for the qualified value format and supported range. | **Example request:** ``` GET https://scrappa.co/api/kayak/packages/search?destination=Z35107&origin=ICT&departure_date=2026-10-31&return_date=2026-11-04 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "operation": "packages.search", "data": { "results": [], "search_state": [], "warnings": [], "provenance": { "provider": "KAYAK", "freshness": "live" }, "source_data": { "kayak": [] } } } ``` #### KAYAK Live Stay Search - **Docs**: https://scrappa.co/docs/kayak-api/kayak_stays_search - **Summary**: Search live hotel inventory for captured location, date, and occupancy inputs. - **Description**: Search live hotel inventory for captured location, date, and occupancy inputs. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `location_id` | string | Yes | See the endpoint contract for the qualified value format and supported range. | | `location_type` | string | No | See the endpoint contract for the qualified value format and supported range. | | `checkin` | string | Yes | See the endpoint contract for the qualified value format and supported range. | | `checkout` | string | Yes | See the endpoint contract for the qualified value format and supported range. | | `adults` | number | No | See the endpoint contract for the qualified value format and supported range. | | `rooms` | number | No | See the endpoint contract for the qualified value format and supported range. | | `child_ages` | array | No | See the endpoint contract for the qualified value format and supported range. | | `sort` | string | No | See the endpoint contract for the qualified value format and supported range. | **Example request:** ``` GET https://scrappa.co/api/kayak/stays/search?location_id=15830&checkin=2026-10-31&checkout=2026-11-02 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "operation": "stays.search", "data": { "results": [], "search_state": [], "warnings": [], "provenance": { "provider": "KAYAK", "freshness": "live" }, "source_data": { "kayak": [] } } } ``` #### KAYAK Route Intelligence - **Docs**: https://scrappa.co/docs/kayak-api/kayak_flights_route_intelligence - **Summary**: Return indexed route, carrier, review, fare, schedule, and airport facts. - **Description**: Return indexed route, carrier, review, fare, schedule, and airport facts. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `path` | string | Yes | See the endpoint contract for the qualified value format and supported range. | **Example request:** ``` GET https://scrappa.co/api/kayak/flights/route-intelligence?path=%2Fflight-routes%2FNew-York-NYC%2FLas-Vegas-LAS Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "operation": "flights.route-intelligence", "data": { "results": [], "search_state": [], "warnings": [], "provenance": { "provider": "KAYAK", "freshness": "live" }, "source_data": { "kayak": [] } } } ``` #### KAYAK Stay Media - **Docs**: https://scrappa.co/docs/kayak-api/kayak_stays_media - **Summary**: Resolve qualified property thumbnail media without calendar data. - **Description**: Resolve qualified property thumbnail media without calendar data. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `hotel_ids` | array | Yes | See the endpoint contract for the qualified value format and supported range. | | `width` | number | No | See the endpoint contract for the qualified value format and supported range. | | `height` | number | No | See the endpoint contract for the qualified value format and supported range. | **Example request:** ``` GET https://scrappa.co/api/kayak/stays/media?hotel_ids%5B0%5D=15297 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "operation": "stays.media", "data": { "results": [], "search_state": [], "warnings": [], "provenance": { "provider": "KAYAK", "freshness": "live" }, "source_data": { "kayak": [] } } } ``` #### KAYAK Stay Property Details - **Docs**: https://scrappa.co/docs/kayak-api/kayak_stays_property - **Summary**: Return indexed property details, amenities, policies, media references, nearby properties, and initial review data. - **Description**: Return indexed property details, amenities, policies, media references, nearby properties, and initial review data. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `path` | string | Yes | See the endpoint contract for the qualified value format and supported range. | **Example request:** ``` GET https://scrappa.co/api/kayak/stays/property?path=%2FLas-Vegas-Hotels-Park-MGM-Las-Vegas.15297.ksp Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "operation": "stays.property", "data": { "results": [], "search_state": [], "warnings": [], "provenance": { "provider": "KAYAK", "freshness": "live" }, "source_data": { "kayak": [] } } } ``` #### KAYAK Stay Rates - **Docs**: https://scrappa.co/docs/kayak-api/kayak_stays_rates - **Summary**: Return complete validated provider rate groups for a property, dates, and occupancy. - **Description**: Return complete validated provider rate groups for a property, dates, and occupancy. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `hotel_id` | number | Yes | See the endpoint contract for the qualified value format and supported range. | | `checkin` | string | Yes | See the endpoint contract for the qualified value format and supported range. | | `checkout` | string | Yes | See the endpoint contract for the qualified value format and supported range. | | `adults` | number | No | See the endpoint contract for the qualified value format and supported range. | | `rooms` | number | No | See the endpoint contract for the qualified value format and supported range. | | `child_ages` | array | No | See the endpoint contract for the qualified value format and supported range. | | `price_mode` | string | No | See the endpoint contract for the qualified value format and supported range. | **Example request:** ``` GET https://scrappa.co/api/kayak/stays/rates?hotel_id=15297&checkin=2026-10-31&checkout=2026-11-02 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "operation": "stays.rates", "data": { "results": [], "search_state": [], "warnings": [], "provenance": { "provider": "KAYAK", "freshness": "live" }, "source_data": { "kayak": [] } } } ``` #### KAYAK Stay Reviews - **Docs**: https://scrappa.co/docs/kayak-api/kayak_stays_reviews - **Summary**: Return the qualified first review page and supported sort shape. - **Description**: Return the qualified first review page and supported sort shape. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `hotel_id` | number | Yes | See the endpoint contract for the qualified value format and supported range. | | `sort` | string | No | See the endpoint contract for the qualified value format and supported range. | | `amount` | number | No | See the endpoint contract for the qualified value format and supported range. | **Example request:** ``` GET https://scrappa.co/api/kayak/stays/reviews?hotel_id=15297 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "operation": "stays.reviews", "data": { "results": [], "search_state": [], "warnings": [], "provenance": { "provider": "KAYAK", "freshness": "live" }, "source_data": { "kayak": [] } } } ``` #### KAYAK Structured City Guide - **Docs**: https://scrappa.co/docs/kayak-api/kayak_guides_city - **Summary**: Return unique structured planning, neighborhood, landmark, season, event, price, and activity fields. - **Description**: Return unique structured planning, neighborhood, landmark, season, event, price, and activity fields. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `path` | string | Yes | See the endpoint contract for the qualified value format and supported range. | **Example request:** ``` GET https://scrappa.co/api/kayak/guides/city?path=%2FLas-Vegas.35107.guide Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "operation": "guides.city", "data": { "results": [], "search_state": [], "warnings": [], "provenance": { "provider": "KAYAK", "freshness": "live" }, "source_data": { "kayak": [] } } } ``` #### KAYAK Vacation Rentals - **Docs**: https://scrappa.co/docs/kayak-api/kayak_stays_vacation_rentals - **Summary**: Return indexed vacation-rental groups plus qualified live stay results. - **Description**: Return indexed vacation-rental groups plus qualified live stay results. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `path` | string | Yes | See the endpoint contract for the qualified value format and supported range. | | `location_id` | string | Yes | See the endpoint contract for the qualified value format and supported range. | | `location_type` | string | No | See the endpoint contract for the qualified value format and supported range. | | `checkin` | string | Yes | See the endpoint contract for the qualified value format and supported range. | | `checkout` | string | Yes | See the endpoint contract for the qualified value format and supported range. | | `adults` | number | No | See the endpoint contract for the qualified value format and supported range. | | `rooms` | number | No | See the endpoint contract for the qualified value format and supported range. | | `child_ages` | array | No | See the endpoint contract for the qualified value format and supported range. | | `sort` | string | No | See the endpoint contract for the qualified value format and supported range. | **Example request:** ``` GET https://scrappa.co/api/kayak/stays/vacation-rentals?path=%2FSeattle-Vacation-Rentals.7054.rental.ksp&location_id=7054&checkin=2026-10-31&checkout=2026-11-02 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "operation": "stays.vacation-rentals", "data": { "results": [], "search_state": [], "warnings": [], "provenance": { "provider": "KAYAK", "freshness": "live" }, "source_data": { "kayak": [] } } } ``` ### Kayak Flights API Search Kayak flights and resolve airport or metro locations as structured JSON. #### Kayak Airport and Location Autocomplete - **Docs**: https://scrappa.co/docs/kayak-flights-api/kayak_airports - **Summary**: Find airports, cities, and metro codes - **Description**: Look up airports, cities, metro codes, and IATA codes with the locale-aware Kayak airport and location autocomplete API for accurate flight-search inputs. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Airport, city, or IATA search text. | | `locale` | string | No | Language locale such as en-US. | **Example request:** ``` GET https://scrappa.co/api/kayak/flights/airports?query=San+Francisco&locale=en-US Header: X-API-KEY: your_api_key ``` #### Kayak One-Way Flight Search - **Docs**: https://scrappa.co/docs/kayak-flights-api/kayak_flights_one_way - **Summary**: Search one-way Kayak flights - **Description**: Returns structured itineraries, fares, providers, legs, segments, airlines, airports, filters, counts, pagination metadata, and price insights when available. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `origin` | string | Yes | 3-letter IATA airport or metro code. | | `destination` | string | Yes | 3-letter IATA airport or metro code. | | `departure_date` | string | Yes | Departure date in YYYY-MM-DD format. | | `adults` | integer | No | Adult passengers, 1-9. | | `children` | integer | No | Child passengers, 0-8. | | `infants_in_seat` | integer | No | Infants with a seat, 0-8. | | `infants_on_lap` | integer | No | Lap infants, 0-8. | | `cabin` | string | No | economy, premium_economy, business, or first. | | `sort` | string | No | best, price, or duration. | | `page` | integer | No | Results page, 1-20. | | `currency` | string | No | 3-letter ISO currency code. | | `locale` | string | No | Language locale such as en-US. | | `include_price_prediction` | boolean | No | Include available price insight data. | | `include_display_metadata` | boolean | No | Include available display and offer metadata. | **Example request:** ``` GET https://scrappa.co/api/kayak/flights/one-way?origin=JFK&destination=LAX&departure_date=2026-09-15&adults=1 Header: X-API-KEY: your_api_key ``` #### Kayak Round-Trip Flight Search - **Docs**: https://scrappa.co/docs/kayak-flights-api/kayak_flights_round_trip - **Summary**: Search round-trip Kayak flights - **Description**: Returns structured itineraries, fares, providers, legs, segments, airlines, airports, filters, counts, pagination metadata, and price insights when available. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `origin` | string | Yes | 3-letter IATA airport or metro code. | | `destination` | string | Yes | 3-letter IATA airport or metro code. | | `departure_date` | string | Yes | Departure date in YYYY-MM-DD format. | | `adults` | integer | No | Adult passengers, 1-9. | | `children` | integer | No | Child passengers, 0-8. | | `infants_in_seat` | integer | No | Infants with a seat, 0-8. | | `infants_on_lap` | integer | No | Lap infants, 0-8. | | `cabin` | string | No | economy, premium_economy, business, or first. | | `sort` | string | No | best, price, or duration. | | `page` | integer | No | Results page, 1-20. | | `currency` | string | No | 3-letter ISO currency code. | | `locale` | string | No | Language locale such as en-US. | | `include_price_prediction` | boolean | No | Include available price insight data. | | `include_display_metadata` | boolean | No | Include available display and offer metadata. | | `return_date` | string | Yes | Return date after departure in YYYY-MM-DD format. | **Example request:** ``` GET https://scrappa.co/api/kayak/flights/round-trip?origin=SFO&destination=NYC&departure_date=2026-09-10&return_date=2026-09-17&adults=1 Header: X-API-KEY: your_api_key ``` ### 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 ID or name (elektronik, auto, immobilien, wohnung-mieten, haus-mieten, wohnung-kaufen, haus-kaufen) | | `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 { "success": true, "data": [], "meta": { "results_count": 0 } } ``` #### 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 Closest Cities - **Docs**: https://scrappa.co/docs/kununu-api/kununu_closest_cities - **Summary**: City UUIDs near coordinates - **Description**: Get kununu city UUIDs ordered by distance from geographic coordinates. Useful to chain into location-filtered job searches. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | Country code: de (Germany), at (Austria), ch (Switzerland). Default: de | | `latitude` | number | Yes | Latitude of the search center (e.g., 52.52) | | `longitude` | number | Yes | Longitude of the search center (e.g., 13.405) | **Example request:** ``` GET https://scrappa.co/api/kununu/closest-cities?country=de&latitude=52.52&longitude=13.405 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": [ "city-uuid-1", "city-uuid-2" ], "meta": { "total": 2, "cached": false, "cached_at": null } } ``` #### Kununu Company Autocomplete - **Docs**: https://scrappa.co/docs/kununu-api/kununu_autocomplete - **Summary**: Company name autocomplete suggestions - **Description**: Get company autocomplete suggestions for a search term. Useful to resolve company slugs and UUIDs before calling other endpoints. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Company name search term (e.g., "bmw") | | `limit` | integer | No | Maximum number of suggestions (1-25, default: 10) | **Example request:** ``` GET https://scrappa.co/api/kununu/autocomplete?query=bmw&limit=5 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": [ { "uuid": "company-uuid", "name": "BMW Group", "slug": "bmw-group", "logo": "https://example.com/logo.png", "type": "company", "countryCode": "de", "url": "https://www.kununu.com/de/bmw-group" } ], "meta": { "total": 1, "cached": false, "cached_at": null } } ``` #### 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") | | `countryCode` | string | No | Alias for country (de, at, ch). | **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 Company Salary - **Docs**: https://scrappa.co/docs/kununu-api/kununu_company_salary - **Summary**: Salary data reported for one company - **Description**: Get the salary data reported for a specific company: compensation statistics, salary ranges, satisfaction, and salary comments. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | Yes | Country code: de (Germany), at (Austria), ch (Switzerland) | | `company_slug` | string | Yes | Company slug from Kununu (e.g., "bmw-group", "sap-se") | **Example request:** ``` GET https://scrappa.co/api/kununu/company-salary?country=de&company_slug=bmw-group Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "compensation": { "average": 72000 }, "ranges": [], "salarySatisfaction": 3.9, "comments": [], "caveat": "Some deeper salary breakdowns require a kununu member login and may be absent." }, "meta": { "company_slug": "bmw-group", "country": "de", "cached": false, "cached_at": null } } ``` #### Kununu Employer Sitemap - **Docs**: https://scrappa.co/docs/kununu-api/kununu_sitemap - **Summary**: Enumerate all employer profiles - **Description**: Enumerate the full kununu employer universe through the public sitemap: letter buckets, page counts per bucket, and up to 300 employer profile links per page. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | Country code: de (Germany), at (Austria), ch (Switzerland). Default: de | | `letter` | string | No | Letter bucket: 123, a-z, ae, oe, ue. Omit for the bucket index. | | `page` | integer | No | Sub-page within the letter bucket (requires letter). Omit for the page count of the bucket. | **Example request:** ``` GET https://scrappa.co/api/kununu/sitemap?country=de&letter=b&page=1 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": [ { "name": "Example GmbH", "slug": "example-gmbh", "url": "https://www.kununu.com/de/example-gmbh" } ], "meta": { "pagination": { "currentPage": 1, "resultsPerPage": 300 }, "letter": "b", "cached": false, "cached_at": null } } ``` #### 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 structured description, salary ranges, company satisfaction scores, similar jobs, and page metadata when they are available on the listing. Both the canonical /de/job/{id} URL shape and legacy job-postings links are accepted. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | Yes | Public Kununu job posting URL (e.g. https://www.kununu.com/de/job/5ab3a865-486a-413b-be4a-96fef68247ce) | **Example request:** ``` GET https://scrappa.co/api/kununu/job?url=https%3A%2F%2Fwww.kununu.com%2Fde%2Fjob%2F5ab3a865-486a-413b-be4a-96fef68247ce Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "id": "5ab3a865-486a-413b-be4a-96fef68247ce", "url": "https://www.kununu.com/de/job/5ab3a865-486a-413b-be4a-96fef68247ce", "title": "Senior Software Engineer", "company": { "name": "Example GmbH", "uuid": "company-uuid", "slug": "example-gmbh", "score": 4.1, "isTopCompany": false, "industryId": 6, "website": "https://example.com", "countryCode": "de" }, "description_html": "

Full Kununu description

", "description_sections": { "companyDescription": { "title": null, "content": "

Full Kununu description

" } }, "contact_person": { "name": "Jane Recruiter", "email": "jane@example.com", "phone": "+49 30 123456" }, "postedAt": "2026-07-01", "activeUntil": "2027-07-01", "city": "Berlin", "addressRegion": "Berlin", "postCode": "10115", "street": "Examplestr. 1", "employmentTypes": [ "JOB_EMPLOYMENT_FULLTIME" ], "remoteOptions": [ "FULL_REMOTE" ], "salary": null, "industrySalary": { "aliases": [ "Softwareentwickler" ], "countryCode": "de", "currency": "EUR", "jobTitle": "Software Engineer", "range": { "average": 68000, "lowerBound": 52000, "upperBound": 90000, "numberOfDataPoints": 1234 } }, "kununuJobTitle": { "id": 12345, "groupId": 678, "title": "Softwareentwickler:in" }, "application": { "type": "url", "url": "https://example.com/apply" }, "satisfaction": { "recommendationRate": { "percentage": 72, "totalReviews": 100, "recommendedTotalReviews": 72, "notRecommendedTotalReviews": 28 }, "roundedScore": 4, "score": 4.1, "totalReviews": 150 }, "source": "kununu", "paidType": "paid", "externalJobId": "ext-123", "discipline": 1008, "industryId": 6, "status": "active", "indexationRules": { "index": true, "canonical": "de/job/job-uuid" }, "similarJobs": [], "nextJobId": "next-job-uuid" }, "meta": { "url": "https://www.kununu.com/de/job/5ab3a865-486a-413b-be4a-96fef68247ce", "duration_ms": 123.45, "scraped_at": "2026-02-01T00:00:00.000Z", "cached": false, "cached_at": null } } ``` #### Kununu Job Locations - **Docs**: https://scrappa.co/docs/kununu-api/kununu_job_locations - **Summary**: Location suggestions for job search - **Description**: Resolve a free-text location to kununu job-search location identifiers (city/state UUIDs). **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Location search term (e.g., "Berlin") | **Example request:** ``` GET https://scrappa.co/api/kununu/job-locations?query=Berlin Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": [ { "id": "city--location-uuid--Berlin", "name": "Berlin", "type": "city", "uuid": "location-uuid" } ], "meta": { "total": 1, "cached": false, "cached_at": null } } ``` #### Kununu Job Titles - **Docs**: https://scrappa.co/docs/kununu-api/kununu_job_titles - **Summary**: Job title suggestions with matching companies - **Description**: Get job title suggestions for a search term, including companies with matching open positions. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Job title search term (min. 2 characters) | | `country` | string | No | Country code: de (Germany), at (Austria), ch (Switzerland). Default: de | **Example request:** ``` GET https://scrappa.co/api/kununu/job-titles?query=Product+Manager&country=de Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "jobTitles": [ { "id": 123, "title": "Product Manager:in", "slug": "product-managerin", "matchingScore": 0.95 } ], "companies": [ { "uuid": "company-uuid", "name": "Example GmbH", "slug": "example-gmbh", "url": "https://www.kununu.com/de/example-gmbh" } ] }, "meta": { "totalJobTitles": 1, "totalCompanies": 1, "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/de/job/job-uuid", "postedAt": "2026-03-01", "city": "Berlin", "region": "Berlin", "stateCode": "DE-BE", "employmentTypes": [ "JOB_EMPLOYMENT_FULLTIME" ], "salary": null, "recommendationRate": 72, "source": "kununu", "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 Recommended Local Companies - **Docs**: https://scrappa.co/docs/kununu-api/kununu_recommended_local - **Summary**: Recommended companies near coordinates - **Description**: Get recommended employer profiles near geographic coordinates, including score, recommendation rate, and culture match. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | Country code: de (Germany), at (Austria), ch (Switzerland). Default: de | | `latitude` | number | Yes | Latitude of the search center (e.g., 52.52) | | `longitude` | number | Yes | Longitude of the search center (e.g., 13.405) | **Example request:** ``` GET https://scrappa.co/api/kununu/recommended-local?country=de&latitude=52.52&longitude=13.405 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "closestCityUuid": "city-uuid", "isFallback": false, "profiles": [ { "uuid": "company-uuid", "name": "Example GmbH", "slug": "example-gmbh", "score": { "value": 4.2 }, "url": "https://www.kununu.com/de/example-gmbh" } ] }, "meta": { "cached": false, "cached_at": null } } ``` #### Kununu Related Job Searches - **Docs**: https://scrappa.co/docs/kununu-api/kununu_related_job_searches - **Summary**: Related job-search links by country - **Description**: Get curated related job-search links for a country, grouped into job titles, locations, disciplines, and search terms — each with a live job count. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | Country code: de (Germany), at (Austria), ch (Switzerland). Default: de | **Example request:** ``` GET https://scrappa.co/api/kununu/related-job-searches?country=de Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "jobTitles": [ { "name": "Softwareentwickler:in Jobs", "url": "https://www.kununu.com/de/jobs/softwareentwicklerin", "jobCount": 1234 } ], "locations": [], "disciplines": [], "searchTerms": [] }, "meta": { "cached": false, "cached_at": null } } ``` #### 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. "newest" and "oldest" order the full result set by last review activity, which is the creation date unless the review was edited later. "best" and "worst" order each returned page by score while preserving stable, non-overlapping pagination. Omit to use the default kununu relevance ordering. For incremental syncing, compare the updatedAt field rather than createdAt. | | `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" | | `result_filters[]` | array | No | Filter candidate reviews by application outcome: "hired", "rejected", "offerDeclined", "deferred" | | `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-uuid", "uuid": "response-uuid", "text": "Thank you for your feedback", "response": "Thank you for your feedback", "createdAt": "2026-01-03T00:00:00.000Z", "updatedAt": "2026-01-04T00:00:00.000Z", "reviewEditedAfterResponse": false, "reactions": { "helpful": { "count": 2 } }, "user": { "name": "HR Team" }, "author": null } ], "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 } }, "totalReviewsApprenticeship": 42, "duration_ms": 123.45, "cached": false } } ``` #### Kununu Salaries Overview - **Docs**: https://scrappa.co/docs/kununu-api/kununu_salaries - **Summary**: Salary hub: featured titles and top rated companies - **Description**: Get the kununu salary hub for a country: featured job title salary data, top-rated companies, and industry listings. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | Country code: de (Germany), at (Austria), ch (Switzerland). Default: de | **Example request:** ``` GET https://scrappa.co/api/kununu/salaries?country=de Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "jobTitle": { "jobTitlePagesPaginated": [] }, "topRatedProfiles": [], "stateJobPostings": [], "industries": [], "caveat": "Some deeper salary breakdowns require a kununu member login and may be absent." }, "meta": { "cached": false, "cached_at": null } } ``` #### Kununu Salary - **Docs**: https://scrappa.co/docs/kununu-api/kununu_salary - **Summary**: Salary statistics for a job title - **Description**: Get salary statistics for a job title: averages, ranges, career paths, education levels, and top cities. The free-text title is resolved to the closest matching kununu job title. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | Country code: de (Germany), at (Austria), ch (Switzerland). Default: de | | `job_title` | string | Yes | Job title to look up (e.g., "Softwareentwickler"). Resolved to the closest match. | **Example request:** ``` GET https://scrappa.co/api/kununu/salary?country=de&job_title=Softwareentwickler Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "jobTitle": { "title": "Softwareentwickler:in", "stats": { "average": 68000 } }, "careerPaths": [], "educationLevels": [], "caveat": "Some deeper salary breakdowns require a kununu member login and may be absent." }, "meta": { "resolution": { "term": "Softwareentwickler", "matchedTitle": "Softwareentwickler:in", "slug": "softwareentwicklerin", "id": 123 }, "cached": false, "cached_at": null } } ``` #### 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 } } ``` #### Kununu Similar Jobs - **Docs**: https://scrappa.co/docs/kununu-api/kununu_similar_jobs - **Summary**: Jobs similar to a given posting - **Description**: Get job postings similar to a given job posting. Returns an empty list when no similar postings exist in the given country. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `job_id` | string | Yes | UUID of the job posting (from the jobs endpoint) | | `country` | string | Yes | Country code: de (Germany), at (Austria), ch (Switzerland). Must match the posting's own country. | **Example request:** ``` GET https://scrappa.co/api/kununu/similar-jobs?job_id=5ab3a865-486a-413b-be4a-96fef68247ce&country=ch 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/ch/job/job-uuid", "postedAt": "2026-03-01", "city": "Z\u00fcrich", "company": { "uuid": "company-uuid", "name": "Example AG" } } ], "meta": { "total": 1, "job_id": "job-uuid", "country": "ch", "cached": false, "cached_at": null } } ``` #### Kununu Single Review - **Docs**: https://scrappa.co/docs/kununu-api/kununu_review - **Summary**: Fetch one Kununu review URL and detect deleted reviews - **Description**: Fetch a dedicated Kununu review page without paginating company reviews. Active reviews return basic review details. A visible Kununu unavailable-review tombstone returns a confirmed deleted state. Browser blocks and upstream failures return a retryable 503 and are not billed. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | Yes | Dedicated Kununu review URL from Germany, Austria, or Switzerland | **Example request:** ``` GET https://scrappa.co/api/kununu/review?url=https%3A%2F%2Fwww.kununu.com%2Fde%2Fcr3ate%2Fbewertung%2F846cb87d-fc15-4477-bd50-8d426ca910d6 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "status": "active", "exists": true, "data": { "uuid": "846cb87d-fc15-4477-bd50-8d426ca910d6", "country": "de", "company_slug": "cr3ate", "url": "https://www.kununu.com/de/cr3ate/bewertung/846cb87d-fc15-4477-bd50-8d426ca910d6", "company_name": "CR3ATE", "title": "Halten sich nicht an Absprachen", "score": 1.6, "recommended": false, "review_date": "Januar 2025", "employment": "Ex-Zeitarbeiter/in Hat bis 2024 f\u00fcr dieses Unternehmen in Schwentinental gearbeitet.", "content": { "positive": "P\u00fcnktliche Gehaltszahlung.", "negative": "Absprachen werden nicht eingehalten.", "suggestions": "Besser kommunizieren." } }, "meta": { "upstream_status": 200, "duration_ms": 15234, "checked_at": "2026-07-20T10:00:00+00:00", "cached": false } } ``` #### Kununu Top Companies - **Docs**: https://scrappa.co/docs/kununu-api/kununu_top_companies - **Summary**: Ranked top-company cards with score breakdowns - **Description**: Get ranked top companies on Kununu including awards, score breakdowns, snippets, and review/job counts. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | Country code: de (Germany), at (Austria), ch (Switzerland). Default: de | | `year` | integer | No | Top-company award year (e.g. 2026). Omit for the current ranking. | | `page` | integer | No | Page number for pagination (default: 1) | | `sort` | string | No | Sort order: "number-reviews-desc" | **Example request:** ``` GET https://scrappa.co/api/kununu/top-companies?country=de&year=2026 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": [ { "uuid": "company-uuid", "name": "Example GmbH", "slug": "example-gmbh", "score": { "value": 4.5, "rounded": 4.5 }, "recommendationRate": 92, "totalReviews": 1234, "totalJobs": 56, "isTopCompany": true, "url": "https://www.kununu.com/de/example-gmbh" } ], "meta": { "pagination": { "currentPage": 1, "totalPages": 12, "totalResults": 450 }, "cached": false, "cached_at": null } } ``` #### Kununu Top Company Jobs - **Docs**: https://scrappa.co/docs/kununu-api/kununu_top_company_jobs - **Summary**: Latest jobs at top companies - **Description**: Get the newest job postings from kununu top companies, sorted by publication date. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | Country code: de (Germany), at (Austria), ch (Switzerland). Default: de | | `limit` | integer | No | Number of jobs to return (1-50, default: 7) | **Example request:** ``` GET https://scrappa.co/api/kununu/top-company-jobs?country=de&limit=10 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/de/job/job-uuid", "postedAt": "2026-03-01", "city": "Berlin", "company": { "uuid": "company-uuid", "name": "Example GmbH" } } ], "meta": { "total": 1, "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 by public URL or numeric organization ID. Phone and employee growth are null when absent from the public page, even if available in a signed-in view. A missing optional field does not mean the company is unresolved. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | No | LinkedIn company URL. Required when company_id is omitted. | | `company_id` | string | No | Numeric LinkedIn organization ID. Required when url is omitted. | | `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 Google Search 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 by public URL or numeric member ID, including experience, education, and skills. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | No | LinkedIn profile URL. Use the current URL; this request does not search for renamed profiles. Required when profile_id is omitted. | | `profile_id` | string | No | Numeric LinkedIn member ID. Required when url is omitted. | | `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, "profile_id": "251749025", "url": "https://www.linkedin.com/in/williamhgates", "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": [] } ``` ### mobile.de API Search German vehicle listings and retrieve rich listing, dealer, and recommendation data. #### mobile.de Dealer Inventory API Documentation - **Docs**: https://scrappa.co/docs/mobile-de-api/mobile_de_dealer_inventory - **Summary**: Search a dealer’s current vehicle inventory - **Description**: Retrieve current listing cards for a dealer with the same validated pagination, sorting, and core filters as search. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `dealer_id` | string | Yes | Dealer identifier returned by a listing. | | `vehicle_type` | string | No | Vehicle type. v1 supports car. | | `query` | string | No | Optional free-text vehicle search. | | `offset` | integer | No | Zero-based result offset. | | `limit` | integer | No | Listings to return, from 1 to 20. | | `price_min` | integer | No | Optional non-negative minimum price. | | `price_max` | integer | No | Optional non-negative maximum price. | | `registration_year_min` | integer | No | Optional minimum first-registration year. | | `registration_year_max` | integer | No | Optional maximum first-registration year. | | `mileage_min` | integer | No | Optional non-negative minimum mileage. | | `mileage_max` | integer | No | Optional non-negative maximum mileage. | | `fuel` | array | No | Repeatable proved fuel value. Initially PETROL. | | `transmission` | array | No | Repeatable proved transmission value. Initially AUTOMATIC_GEAR. | | `price_rating` | array | No | VERY_GOOD_PRICE and/or GOOD_PRICE. | | `make_id` | string | No | Validated marketplace make identifier. | | `model_id` | string | No | Validated marketplace model identifier. Requires make_id. | | `sort` | string | No | relevance, price_asc, or price_desc. | **Example request:** ``` GET https://scrappa.co/api/mobile-de/v1/dealer-inventory?dealer_id=dealer-123&offset=0&limit=20 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "listings": [], "pagination": { "offset": 0, "limit": 20, "next_offset": null, "total": 0, "live_snapshot": true } }, "meta": { "endpoint_family": "dealer_inventory" } } ``` #### mobile.de Dealer Rating API Documentation - **Docs**: https://scrappa.co/docs/mobile-de-api/mobile_de_dealer_rating - **Summary**: Retrieve aggregate dealer rating data - **Description**: Retrieve the proved dealer result total and mobile.de tenure value. This endpoint does not return textual reviews. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `dealer_id` | string | Yes | Dealer identifier returned by a listing. | **Example request:** ``` GET https://scrappa.co/api/mobile-de/v1/dealer-rating?dealer_id=dealer-123 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "rating": { "numResultsTotal": 120, "withMobileSince": "2017-06" } }, "meta": { "endpoint_family": "dealer_rating" } } ``` #### mobile.de Listing API Documentation - **Docs**: https://scrappa.co/docs/mobile-de-api/mobile_de_listing - **Summary**: Retrieve one rich vehicle listing - **Description**: Retrieve safe, rich, nullable vehicle, price, finance, equipment, media, lifecycle, location, delivery, and dealer-summary fields for a listing returned by search. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `listing_id` | string | Yes | Listing identifier returned by search. | **Example request:** ``` GET https://scrappa.co/api/mobile-de/v1/listing?listing_id=123456789 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "listing": { "listing_id": "123456789", "title": "Example vehicle", "price": { "amount": 24900, "currency": "EUR" } } }, "meta": { "endpoint_family": "listing" } } ``` #### mobile.de Recommendations API Documentation - **Docs**: https://scrappa.co/docs/mobile-de-api/mobile_de_recommendations - **Summary**: Retrieve related vehicle listings - **Description**: Retrieve a deduplicated list of related listing cards. A valid empty list is a successful response. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `listing_id` | string | Yes | Listing identifier returned by search. | **Example request:** ``` GET https://scrappa.co/api/mobile-de/v1/recommendations?listing_id=123456789 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "listings": [] }, "meta": { "endpoint_family": "recommendations" } } ``` #### mobile.de Search API Documentation - **Docs**: https://scrappa.co/docs/mobile-de-api/mobile_de_search - **Summary**: Search current mobile.de vehicle listings - **Description**: Search current vehicle listings with validated filters, sorting, and offset pagination. Totals and adjacent pages are live snapshots. Optional facets and offer cards never prevent core search results from being returned. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `vehicle_type` | string | No | Vehicle type. v1 supports car. | | `query` | string | No | Optional free-text vehicle search. | | `offset` | integer | No | Zero-based result offset. Defaults to 0. | | `limit` | integer | No | Listings to return, from 1 to 20. | | `price_min` | integer | No | Optional non-negative minimum price. | | `price_max` | integer | No | Optional non-negative maximum price. | | `registration_year_min` | integer | No | Optional minimum first-registration year. | | `registration_year_max` | integer | No | Optional maximum first-registration year. | | `mileage_min` | integer | No | Optional non-negative minimum mileage. | | `mileage_max` | integer | No | Optional non-negative maximum mileage. | | `fuel` | array | No | Repeatable proved fuel value. Initially PETROL. | | `transmission` | array | No | Repeatable proved transmission value. Initially AUTOMATIC_GEAR. | | `price_rating` | array | No | VERY_GOOD_PRICE and/or GOOD_PRICE. | | `make_id` | string | No | Validated marketplace make identifier. | | `model_id` | string | No | Validated marketplace model identifier. Requires make_id. | | `sort` | string | No | relevance, price_asc, or price_desc. | | `include` | array | No | Optional facets and/or offer_cards enrichment. | **Example request:** ``` GET https://scrappa.co/api/mobile-de/v1/search?query=Golf&offset=0&limit=20&sort=price_asc Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "listings": [], "pagination": { "offset": 0, "limit": 20, "next_offset": null, "total": 0, "live_snapshot": true } }, "meta": { "endpoint_family": "search" } } ``` ### 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 } ``` ### Realestate.com.au API Search Australian real estate listings and extract embedded page data from realestate.com.au. #### Realestate.com.au Agency Profile - **Docs**: https://scrappa.co/docs/realestate-com-au-api/realestate_com_au_agency_profile - **Summary**: Extract a realestate.com.au agency profile. - **Description**: Fetch a public realestate.com.au agency profile page through browser-orchestrator and return embedded agency, team, listing, review, and performance data when available. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | Yes | Full realestate.com.au agency profile URL. | **Example request:** ``` GET https://scrappa.co/api/realestate-com-au/agency-profile?url=https%3A%2F%2Fwww.realestate.com.au%2Fagency%2Fprofile-real-estate-adelaide-OYYCER Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "url": "https://www.realestate.com.au/agency/profile-real-estate-adelaide-OYYCER", "profile": [] } } ``` #### Realestate.com.au Agent Profile - **Docs**: https://scrappa.co/docs/realestate-com-au-api/realestate_com_au_agent_profile - **Summary**: Extract an individual realestate.com.au agent profile. - **Description**: Fetch a public realestate.com.au agent profile page through browser-orchestrator and return the embedded profile data. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | Yes | Full realestate.com.au agent profile URL. | **Example request:** ``` GET https://scrappa.co/api/realestate-com-au/agent-profile?url=https%3A%2F%2Fwww.realestate.com.au%2Fagent%2Fjames-devlin-3523008 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "url": "https://www.realestate.com.au/agent/james-devlin-3523008", "profile": [] } } ``` #### Realestate.com.au Agents - **Docs**: https://scrappa.co/docs/realestate-com-au-api/realestate_com_au_agents - **Summary**: Extract find-agent page data for a location. - **Description**: Fetch a public realestate.com.au find-agent page through browser-orchestrator and return embedded page data plus normalized agent-like records when available. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `location` | string | No | Location slug or text such as sydney-nsw-2000. Required unless url is supplied. | | `url` | string | No | Full realestate.com.au find-agent URL. | | `page` | integer | No | Page number for find-agent pagination. | **Example request:** ``` GET https://scrappa.co/api/realestate-com-au/agents?location=sydney-nsw-2000 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "url": "https://www.realestate.com.au/find-agent/sydney-nsw-2000", "agents": [] } } ``` #### Realestate.com.au Autocomplete - **Docs**: https://scrappa.co/docs/realestate-com-au-api/realestate_com_au_autocomplete - **Summary**: Call the consumer-suggest autocomplete endpoint directly. - **Description**: Fetch realestate.com.au consumer-suggest autocomplete results. This is the endpoint used by public search boxes for suburbs, regions, states, postcodes, precincts, addresses, schools, and projects depending on the types parameter. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Autocomplete search term. | | `limit` | integer | No | Maximum suggestions to return. | | `types` | string | No | Comma-separated suggestion types, e.g. suburb,region,precinct,state,postcode,address. | | `source` | string | No | Client source sent to consumer-suggest, e.g. homepage-web, property-seeker, or reax-multi-intent-search-modal. | **Example request:** ``` GET https://scrappa.co/api/realestate-com-au/autocomplete?query=Sydney+CBD%2C+NSW&limit=7&types=suburb%2Cregion%2Cprecinct%2Cstate%2Cpostcode Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "query": "Sydney CBD, NSW", "types": "suburb,region,precinct,state,postcode", "suggestions": [] } } ``` #### Realestate.com.au Locations - **Docs**: https://scrappa.co/docs/realestate-com-au-api/realestate_com_au_locations - **Summary**: Resolve Australian locations for property search. - **Description**: Search realestate.com.au location suggestions for suburbs, regions, schools, and projects. Use this before property search when you need a validated location string. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Suburb, postcode, school, region, or project search term. | | `limit` | integer | No | Maximum suggestions to return. | **Example request:** ``` GET https://scrappa.co/api/realestate-com-au/locations?query=Sydney&limit=5 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "query": "Sydney", "locations": { "suggestions": [ { "display": "Sydney, NSW 2000" } ] } } } ``` #### Realestate.com.au Property - **Docs**: https://scrappa.co/docs/realestate-com-au-api/realestate_com_au_property - **Summary**: Extract structured listing data from a realestate.com.au property URL. - **Description**: Fetch a realestate.com.au property page through browser-orchestrator and extract the embedded ArgonautExchange listing data as structured JSON. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | Yes | Full realestate.com.au property URL. | **Example request:** ``` GET https://scrappa.co/api/realestate-com-au/property?url=https%3A%2F%2Fwww.realestate.com.au%2Fproperty-house-vic-tarneit-143160680 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "listing_id": "143160680", "listing": { "id": "143160680", "property_type": "House", "price": "$650,000" } } } ``` #### Realestate.com.au Sales Events - **Docs**: https://scrappa.co/docs/realestate-com-au-api/realestate_com_au_sales_events - **Summary**: Fetch sales events and auction result data by state. - **Description**: Call the public sales-events API path through the approved solver/proxy path for state-level sales and auction event data. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `state` | string | No | Australian state or territory code, e.g. nsw, vic, qld. | | `url` | string | No | Full sales-events-api.realestate.com.au URL. Optional alternative to state. | **Example request:** ``` GET https://scrappa.co/api/realestate-com-au/sales-events?state=nsw Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "state": "nsw", "events": [] } } ``` #### Realestate.com.au Search - **Docs**: https://scrappa.co/docs/realestate-com-au-api/realestate_com_au_search - **Summary**: Search buy, rent, and sold listings on realestate.com.au. - **Description**: Search Australian real estate listings by loading public realestate.com.au search pages through browser-orchestrator and extracting the embedded ArgonautExchange data. Supports buy, rent, and sold channels plus mapped URL filters such as price, bedrooms, bathrooms, parking, property types, keywords, pagination, and sorting. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `location` | string | Yes | Location search text such as Sydney, NSW. | | `channel` | string | No | Listing channel: buy, rent, or sold. | | `page` | integer | No | Page number. | | `sort` | string | No | realestate.com.au sort type, such as new-desc or sold-date-desc. | | `min_price` | integer | No | Minimum price filter. | | `max_price` | integer | No | Maximum price filter. | | `min_bedrooms` | integer | No | Minimum bedroom count. | | `max_bedrooms` | integer | No | Maximum bedroom count. | | `min_bathrooms` | integer | No | Minimum bathroom count. | | `min_carspaces` | integer | No | Minimum parking spaces. | | `property_types` | string | No | Comma-separated realestate.com.au property type filters. | | `keywords` | string | No | Comma-separated keyword filters. | **Example request:** ``` GET https://scrappa.co/api/realestate-com-au/search?location=Sydney%2C+NSW&channel=buy&page=1 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "channel": "buy", "location": "Sydney, NSW", "total_results": 1, "listings": [ { "id": "143160680", "url": "https://www.realestate.com.au/property-house-vic-tarneit-143160680", "property_type": "House", "price": "$650,000" } ] } } ``` #### Realestate.com.au Suburb Profile - **Docs**: https://scrappa.co/docs/realestate-com-au-api/realestate_com_au_suburb_profile - **Summary**: Extract public suburb and market profile data. - **Description**: Fetch a public realestate.com.au suburb or Market Explorer page through browser-orchestrator and return embedded profile and market data when available. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | Yes | Full realestate.com.au suburb or market profile URL. | **Example request:** ``` GET https://scrappa.co/api/realestate-com-au/suburb-profile?url=https%3A%2F%2Fwww.realestate.com.au%2Faustralia%2F Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "url": "https://www.realestate.com.au/australia/", "profile": [] } } ``` ### Reddit API Retrieve public subreddit feeds, posts, comments, and search results as structured JSON. #### Get a Reddit Post - **Docs**: https://scrappa.co/docs/reddit-api/reddit_post - **Summary**: Retrieve one public Reddit post by URL or by subreddit and post ID. - **Description**:

Retrieve one public Reddit post using its full URL, or provide both post_id and subreddit. Choose public_json or old_reddit extraction. Each successful request costs 1 credit; 404, 422, 502, and 503 responses are not billable.

**Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | No | Full reddit.com post URL, up to 2,000 characters. Provide url or post_id. | | `post_id` | string | No | Reddit post ID containing 4-20 letters, numbers, or underscores. Provide post_id or url. | | `subreddit` | string | No | Subreddit name without r/. Required with post_id when url is omitted; 2-100 letters, numbers, or underscores. | | `extraction_path` | string | No | Optional source: public_json or old_reddit. Defaults to public_json. | **Example request:** ``` GET https://scrappa.co/api/reddit/post?url=https%3A%2F%2Fwww.reddit.com%2Fr%2FLaravel%2Fcomments%2Fabc123%2Flaravel_13_release_notes%2F&extraction_path=public_json Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "source": "public_json", "data": { "post": { "id": "abc123", "name": "t3_abc123", "subreddit": "Laravel", "title": "Laravel 13 release notes", "author": "example_user", "permalink": "https://www.reddit.com/r/Laravel/comments/abc123/laravel_13_release_notes/", "url": "https://www.reddit.com/r/Laravel/comments/abc123/laravel_13_release_notes/", "selftext": "A discussion of the latest Laravel release.", "score": 128, "upvote_ratio": 0.95, "num_comments": 36, "created_utc": 1781900000, "over_18": false, "spoiler": false, "stickied": false, "flair": "News", "thumbnail": "self" } } } ``` #### Get Reddit Comments - **Docs**: https://scrappa.co/docs/reddit-api/reddit_comments - **Summary**: Retrieve a public Reddit post and its nested comments. - **Description**:

Retrieve a public Reddit post and normalized nested comments using its URL, or provide both post_id and subreddit. Each successful request costs 1 credit; 404, 422, 502, and 503 responses are not billable.

**Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `url` | string | No | Full reddit.com post URL, up to 2,000 characters. Provide url or post_id. | | `post_id` | string | No | Reddit post ID containing 4-20 letters, numbers, or underscores. Provide post_id or url. | | `subreddit` | string | No | Subreddit name without r/. Required with post_id when url is omitted; 2-100 letters, numbers, or underscores. | | `sort` | string | No | Optional comment sort: confidence, top, new, controversial, old, or qa. | | `limit` | integer | No | Optional number of comments from 1 to 100. Defaults to 25. | | `extraction_path` | string | No | Optional source: public_json or old_reddit. Defaults to public_json. | **Example request:** ``` GET https://scrappa.co/api/reddit/comments?url=https%3A%2F%2Fwww.reddit.com%2Fr%2FLaravel%2Fcomments%2Fabc123%2Flaravel_13_release_notes%2F&sort=confidence&limit=25&extraction_path=public_json Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "source": "public_json", "data": { "post": { "id": "abc123", "name": "t3_abc123", "subreddit": "Laravel", "title": "Laravel 13 release notes", "author": "example_user", "permalink": "https://www.reddit.com/r/Laravel/comments/abc123/laravel_13_release_notes/", "url": "https://www.reddit.com/r/Laravel/comments/abc123/laravel_13_release_notes/", "selftext": "A discussion of the latest Laravel release.", "score": 128, "upvote_ratio": 0.95, "num_comments": 36, "created_utc": 1781900000, "over_18": false, "spoiler": false, "stickied": false, "flair": "News", "thumbnail": "self" }, "comments": [ { "id": "def456", "name": "t1_def456", "parent_id": "t3_abc123", "link_id": "t3_abc123", "author": "helpful_user", "body": "The upgrade guide covers the main changes.", "score": 18, "created_utc": 1781901000, "permalink": "https://www.reddit.com/r/Laravel/comments/abc123/laravel_13_release_notes/def456/", "replies": [] } ] } } ``` #### Get Subreddit Posts - **Docs**: https://scrappa.co/docs/reddit-api/reddit_subreddit - **Summary**: Retrieve subreddit metadata and a paginated feed of public posts. - **Description**:

Retrieve public subreddit metadata and posts using Reddit public JSON or old Reddit HTML extraction. Each successful request costs 1 credit; 404, 422, 502, and 503 responses are not billable.

**Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `subreddit` | string | Yes | Required subreddit name without r/. Must be 2-100 letters, numbers, or underscores. | | `sort` | string | No | Optional sort: hot, new, top, or rising. | | `timeframe` | string | No | Optional top-post timeframe: hour, day, week, month, year, or all. | | `limit` | integer | No | Optional number of posts from 1 to 100. Defaults to 25. | | `after` | string | No | Optional pagination cursor with at most 200 characters. | | `extraction_path` | string | No | Optional source: public_json or old_reddit. Defaults to public_json. | **Example request:** ``` GET https://scrappa.co/api/reddit/subreddit?subreddit=Laravel&sort=hot&limit=25&extraction_path=public_json Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "source": "public_json", "data": { "subreddit": { "display_name": "Laravel", "title": "Laravel", "public_description": "Laravel PHP framework discussion.", "subscribers": 123456, "active_user_count": 321, "over_18": false, "created_utc": 1200000000, "lang": "en", "url": "https://www.reddit.com/r/Laravel/" }, "posts": [ { "id": "abc123", "name": "t3_abc123", "subreddit": "Laravel", "title": "Laravel 13 release notes", "author": "example_user", "permalink": "https://www.reddit.com/r/Laravel/comments/abc123/laravel_13_release_notes/", "url": "https://www.reddit.com/r/Laravel/comments/abc123/laravel_13_release_notes/", "selftext": "A discussion of the latest Laravel release.", "score": 128, "upvote_ratio": 0.95, "num_comments": 36, "created_utc": 1781900000, "over_18": false, "spoiler": false, "stickied": false, "flair": "News", "thumbnail": "self" } ], "after": "t3_next", "before": null, "dist": 1 } } ``` #### Search Reddit Posts - **Docs**: https://scrappa.co/docs/reddit-api/reddit_search - **Summary**: Search public Reddit posts globally or within one subreddit. - **Description**:

Search public Reddit posts globally or within a subreddit, with sorting, time filtering, pagination, and a choice of public_json or old_reddit extraction. Each successful request costs 1 credit; 404, 422, 502, and 503 responses are not billable.

**Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Required search query containing 1-500 characters. | | `subreddit` | string | No | Optional subreddit name without r/. Must be 2-100 letters, numbers, or underscores. | | `sort` | string | No | Optional sort: relevance, hot, top, new, or comments. | | `timeframe` | string | No | Optional timeframe: hour, day, week, month, year, or all. | | `limit` | integer | No | Optional number of posts from 1 to 100. Defaults to 25. | | `after` | string | No | Optional pagination cursor with at most 200 characters. | | `extraction_path` | string | No | Optional source: public_json or old_reddit. Defaults to public_json. | **Example request:** ``` GET https://scrappa.co/api/reddit/search?query=Laravel+queues&subreddit=Laravel&sort=relevance&limit=25&extraction_path=public_json Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "source": "public_json", "data": { "posts": [ { "id": "abc123", "name": "t3_abc123", "subreddit": "Laravel", "title": "Laravel 13 release notes", "author": "example_user", "permalink": "https://www.reddit.com/r/Laravel/comments/abc123/laravel_13_release_notes/", "url": "https://www.reddit.com/r/Laravel/comments/abc123/laravel_13_release_notes/", "selftext": "A discussion of the latest Laravel release.", "score": 128, "upvote_ratio": 0.95, "num_comments": 36, "created_utc": 1781900000, "over_18": false, "spoiler": false, "stickied": false, "flair": "News", "thumbnail": "self" } ], "after": "t3_next", "before": null, "dist": 1 } } ``` ### 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) | | `listing_id` | integer | No | Redfin listing ID from search results (optional) | **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": [] } ``` ### Rentalia API Resolve Rentalia locations, inspect a house including guest reviews, and quote stay prices. The search and geo-search endpoints are retired because Rentalia discontinued its upstream search API. #### Rentalia Geo Search - **Docs**: https://scrappa.co/docs/rentalia-api/rentalia_geo_search - **Summary**: Retired — Rentalia discontinued its search API - **Description**: Deprecated. Rentalia discontinued the upstream geo catalog API, so this endpoint answers 410 Gone without an upstream call. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `lang` | string | No | Response language, default es. | | `lat` | number | No | Search latitude. | | `lon` | number | No | Search longitude. | | `radius` | integer | No | Radius in meters. | **Example request:** ``` GET https://scrappa.co/api/rentalia/geo-search?lang=es&lat=40.4168&lon=-3.7038&radius=3000 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": false, "error": { "code": "ENDPOINT_DEPRECATED", "message": "Rentalia search is no longer available because Rentalia discontinued its upstream search API. The house, locations, and price endpoints remain available." }, "meta": { "endpoint_family": "geo_search", "billable": false, "retryable": false } } ``` #### Rentalia House - **Docs**: https://scrappa.co/docs/rentalia-api/rentalia_house - **Summary**: Holiday house detail and guest reviews - **Description**: The only public guest-review vertical. Contact emails and phone fields are stripped. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Rentalia house id, for example 978257. | | `lang` | string | No | Response language, default es. | **Example request:** ``` GET https://scrappa.co/api/rentalia/house?id=978257&lang=es Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "id": 978257, "opinions": [], "opinionCount": 4 } } ``` #### Rentalia Locations - **Docs**: https://scrappa.co/docs/rentalia-api/rentalia_locations - **Summary**: Holiday location typeahead - **Description**: Unsigned location RPC used to obtain gid/glevel for search. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `query` | string | Yes | Location text, for example Madrid. | | `lang` | string | No | Response language, default es. | **Example request:** ``` GET https://scrappa.co/api/rentalia/locations?query=Madrid&lang=es Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": [ { "id": 14, "geolevel": 3, "name": "Madrid" } ] } ``` #### Rentalia Price - **Docs**: https://scrappa.co/docs/rentalia-api/rentalia_price - **Summary**: Stay price for a rental unit - **Description**: Quotes a stay given dates, capacity, and rental_unit_id. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `rental_unit_id` | string | Yes | Unit identifier from house detail. | | `check_in_date` | string | Yes | YYYY-MM-DD. | | `check_out_date` | string | Yes | YYYY-MM-DD. | | `capacity` | integer | Yes | Guest count. | **Example request:** ``` GET https://scrappa.co/api/rentalia/price?rental_unit_id=978257&check_in_date=2026-09-01&check_out_date=2026-09-08&capacity=2 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": true, "data": { "price": 890 } } ``` #### Rentalia Search - **Docs**: https://scrappa.co/docs/rentalia-api/rentalia_search - **Summary**: Retired — Rentalia discontinued its search API - **Description**: Deprecated. Rentalia discontinued the upstream holiday-rental search API, so this endpoint answers 410 Gone without an upstream call. Use Idealista vacationRentals for holiday-rental search, or the Rentalia house, locations, and price endpoints. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `lang` | string | No | Response language, default es. | | `gid` | string | No | Rentalia region id from the locations endpoint. | | `glevel` | integer | No | Region geolevel. | | `page` | integer | No | 1-based page. | **Example request:** ``` GET https://scrappa.co/api/rentalia/search?lang=es&gid=14&glevel=3 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "success": false, "error": { "code": "ENDPOINT_DEPRECATED", "message": "Rentalia search is no longer available because Rentalia discontinued its upstream search API. The house, locations, and price endpoints remain available." }, "meta": { "endpoint_family": "search", "billable": false, "retryable": false } } ``` ### Semrush API Domain metrics, website traffic, competitor maps, SERP volatility sensor data, trending websites, keyword suggestions, AI content writers, and Google review links from Semrush. #### Semrush Blog Post Writer - **Docs**: https://scrappa.co/docs/semrush-api/semrush_content_blogpost - **Summary**: Generate a full markdown blog article for a topic. - **Description**: Generates a complete markdown blog article for a topic with the Semrush AI text generator. Generation is AI-bound and can take up to ~15 seconds. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `text` | string | Yes | The input text for the writer (a topic for titles/blogpost, the passage to rewrite or summarize otherwise). | **Example request:** ``` GET https://scrappa.co/api/semrush/content/blogpost?text=how+to+brew+pour-over+coffee Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "semrush_content_blogpost", "text": "how to brew pour-over coffee" }, "article_markdown": "# How to Brew Pour-Over Coffee\n\nPour-over coffee rewards patience..." } ``` #### Semrush Domain Competitors - **Docs**: https://scrappa.co/docs/semrush-api/semrush_domain_competitors - **Summary**: The organic/search competitors Semrush maps for a domain, with traffic and Authority Score. - **Description**: Returns the domain summary plus the competitor map Semrush shows for it: up to 7 competitors with monthly visits, Authority Score, and rank. Domains without coverage return covered=false (never charged). **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `domain` | string | Yes | Root domain or subdomain to analyze (e.g. semrush.com). Subdomains resolve to their root domain where Semrush only tracks the root. | **Example request:** ``` GET https://scrappa.co/api/semrush/domain/competitors?domain=semrush.com Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "semrush_domain_competitors", "domain": "semrush.com" }, "covered": true, "summary": { "domain": "semrush.com", "authority_score": 78, "visits": 24500000 }, "competitors": [ { "domain": "ahrefs.com", "authority_score": 80, "visits": 19800000 } ] } ``` #### Semrush Domain Overview - **Docs**: https://scrappa.co/docs/semrush-api/semrush_domain_overview - **Summary**: Merged domain metrics, backlink counts, and website traffic overview for a domain. - **Description**: Returns the merged Semrush view of a domain: Semrush rank, organic keywords/traffic/costs, backlink counts at URL/hostname/root-domain scope, Authority Score, visits and engagement, plus per-block coverage flags. Domains without Semrush coverage return covered=false (never charged). **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `domain` | string | Yes | Root domain or subdomain to analyze (e.g. semrush.com). Subdomains resolve to their root domain where Semrush only tracks the root. | **Example request:** ``` GET https://scrappa.co/api/semrush/domain/overview?domain=semrush.com Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "semrush_domain_overview", "domain": "semrush.com" }, "domain": "semrush.com", "covered": true, "coverage": { "domain_metrics": true, "backlink_counts": true, "website_traffic": true }, "semrush_rank": 631, "organic_keywords": 151000, "organic_traffic": 3200000, "organic_traffic_cost": 4100000, "authority_score": 78, "backlinks_count": 42100000, "referring_domains_count": 189000, "organic_search_traffic": 3200000, "backlink_scopes": { "url": 1200, "hostname": 42100000, "root_domain": 42100000 }, "website": { "domain": "semrush.com", "visits": 24500000, "engagement": { "pages_per_visit": 4.2, "avg_visit_duration_seconds": 412, "bounce_rate": 0.41 } } } ``` #### Semrush Facets - **Docs**: https://scrappa.co/docs/semrush-api/semrush_facets - **Summary**: The sensor database/category codes and trending country/category slugs accepted by the other Semrush endpoints. - **Description**: Reference data for the Semrush API: the 17 sensor databases and 25 sensor categories used by the sensor endpoints, and the 240 trending countries and 111 trending categories used by the trending endpoint. **Example request:** ``` GET https://scrappa.co/api/semrush/facets Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "semrush_facets" }, "sensor": { "dbs": [ "US", "MOBILE-US" ], "categories": [ 1, 2 ], "date_format": "YYYY-MM-DD" }, "trending": { "countries": [ "global", "us" ], "categories": [ "all", "arts_and_entertainment" ] } } ``` #### Semrush Google Review Link & QR - **Docs**: https://scrappa.co/docs/semrush-api/semrush_local_review_qr - **Summary**: Generate a Google review link and shortened review URL for a business from its Google place id. - **Description**: Generates the direct Google "write a review" link plus a shortened URL for a business. The place_id is the Google place id of the business — the Scrappa Google Maps endpoints return it in their business payloads. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `business_name` | string | Yes | Display name of the business. | | `place_id` | string | Yes | Google place id of the business (e.g. ChIJN1t_tDeuEmsRUsoyG83frY4). | **Example request:** ``` GET https://scrappa.co/api/semrush/local/review-qr?business_name=Blue+Bottle+Coffee&place_id=ChIJN1t_tDeuEmsRUsoyG83frY4 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "semrush_local_review_qr", "business_name": "Blue Bottle Coffee", "place_id": "ChIJN1t_tDeuEmsRUsoyG83frY4" }, "request_id": "d2f8c1a0-1234-4abc-9def-0123456789ab", "review_link": "https://search.google.com/local/writereview?placeid=ChIJN1t_tDeuEmsRUsoyG83frY4", "review_short_link": "https://bit.ly/3AbCdEf" } ``` #### Semrush Keyword Suggest - **Docs**: https://scrappa.co/docs/semrush-api/semrush_suggest - **Summary**: Keyword and domain autocomplete suggestions from the Semrush search bar. - **Description**: Returns the autocomplete suggestions Semrush serves for a partial keyword or domain. A query with no suggestions returns an empty list (a legitimate empty answer on a working route). **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `q` | string | Yes | Partial keyword or domain to autocomplete (e.g. "best seo"). | **Example request:** ``` GET https://scrappa.co/api/semrush/suggest?q=best+seo Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "semrush_suggest", "q": "best seo" }, "suggestions": [ "best seo tools", "best seo agency", "best seo software" ] } ``` #### Semrush Paraphrasing & Rewrite - **Docs**: https://scrappa.co/docs/semrush-api/semrush_content_rewrite - **Summary**: Rewrite a passage with the paragraph rewriter, sentence rewriter, or paraphrase generator. - **Description**: Rewrites a passage with one of the Semrush rewriting tools. The category controls the rewrite mode: improve, simplify, or summarize. Generation is AI-bound and typically takes a few seconds. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `tool` | string | Yes | One of: paragraph-rewriter, sentence-rewriter, paraphrase-generator. | | `category` | string | Yes | Rewrite mode: improve, simplify, or summarize. Required — the upstream rejects rewrites without it. | | `text` | string | Yes | The input text for the writer (a topic for titles/blogpost, the passage to rewrite or summarize otherwise). | **Example request:** ``` GET https://scrappa.co/api/semrush/content/rewrite?tool=paragraph-rewriter&category=improve&text=Coffee+is+a+brewed+drink+prepared+from+roasted+coffee+beans. Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "semrush_content_rewrite", "tool": "paragraph-rewriter", "category": "improve" }, "rewritten_text": "Coffee is a rich, aromatic beverage brewed from carefully roasted coffee beans." } ``` #### Semrush Sensor Ranks - **Docs**: https://scrappa.co/docs/semrush-api/semrush_sensor_ranks - **Summary**: Daily SERP volatility scores across 17 databases and 25 categories (rolling 31 days). - **Description**: Returns Semrush Sensor volatility rows for the rolling 31-day window. Without filters the full daily matrix is returned (served from a 24 h cache); pass db, category, and date to filter. Scores run 0-10, where higher means more SERP movement. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `db` | string | No | Sensor database, e.g. US, UK, DE, or a MOBILE-* variant such as MOBILE-US. See the facets endpoint for the full list. | | `category` | integer | No | Sensor category id (1-25). See the facets endpoint for the full list. | | `date` | string | No | Day in YYYY-MM-DD format (rolling 31-day window). | **Example request:** ``` GET https://scrappa.co/api/semrush/sensor/ranks?db=US&category=1 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "semrush_sensor_ranks", "db": "US", "category": 1 }, "rows": [ { "date": "2026-07-28", "rank": 6.4, "db": "US", "category": 1 } ], "row_count": 31, "filters": { "db": "US", "category": 1 } } ``` #### Semrush Sensor SERP Features - **Docs**: https://scrappa.co/docs/semrush-api/semrush_sensor_serp_features - **Summary**: SERP feature occurrence percentages for a database/category/day. - **Description**: Returns the percentage of SERPs carrying each tracked feature (featured snippets, local pack, reviews, and more) for one database, category, and day. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `db` | string | Yes | Sensor database, e.g. US, UK, DE, or a MOBILE-* variant such as MOBILE-US. See the facets endpoint for the full list. | | `category` | integer | Yes | Sensor category id (1-25). See the facets endpoint for the full list. | | `date` | string | Yes | Day in YYYY-MM-DD format (rolling 31-day window). | **Example request:** ``` GET https://scrappa.co/api/semrush/sensor/serp-features?db=US&category=1&date=2026-07-28 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "semrush_sensor_serp_features", "db": "US", "category": 1, "date": "2026-07-28" }, "rows": [ { "date": "2026-07-28", "percent": 12.4, "serp_feature_id": 2, "db": "US", "category_number": 1 } ], "row_count": 24, "filters": { "db": "US", "category": 1, "date": "2026-07-28" } } ``` #### Semrush Sensor Winners & Losers - **Docs**: https://scrappa.co/docs/semrush-api/semrush_sensor_movers - **Summary**: Domains with the biggest ranking gains and losses for a database/category/day. - **Description**: Returns the domains with the largest ranking movement for one database, category, and day, including each domain's 7-day movement series and the category averages. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `db` | string | Yes | Sensor database, e.g. US, UK, DE, or a MOBILE-* variant such as MOBILE-US. See the facets endpoint for the full list. | | `category` | integer | Yes | Sensor category id (1-25). See the facets endpoint for the full list. | | `date` | string | Yes | Day in YYYY-MM-DD format (rolling 31-day window). | **Example request:** ``` GET https://scrappa.co/api/semrush/sensor/movers?db=US&category=1&date=2026-07-28 Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "semrush_sensor_movers", "db": "US", "category": 1, "date": "2026-07-28" }, "date": "2026-07-28", "db": "US", "category": 1, "domains": [ { "domain": "example.com", "diff": 12.4, "keywords": 18400, "new_keywords": 1200, "lost_keywords": 800 } ], "categories": { "1": { "avg_drop": -2.1, "avg_raise": 2.4 } } } ``` #### Semrush Summary Generator - **Docs**: https://scrappa.co/docs/semrush-api/semrush_content_summarize - **Summary**: Summarize a longer text into a paragraph or bullet points. - **Description**: Summarizes a longer text with the Semrush summary generator, as a paragraph or bullet points. The length penalty (0-1, default 1) controls how aggressively the text is shortened. Generation is AI-bound and typically takes a few seconds. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `text` | string | Yes | The input text for the writer (a topic for titles/blogpost, the passage to rewrite or summarize otherwise). | | `length_penalty` | number | No | How aggressively to shorten (0-1, default 1). | | `format` | string | No | Summary format: paragraph (default) or bullets. | **Example request:** ``` GET https://scrappa.co/api/semrush/content/summarize?text=Coffee+is+a+brewed+drink+prepared+from+roasted+coffee+beans%2C+the+seeds+of+berries+from+certain+Coffea+species...&format=bullets Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "semrush_content_summarize", "format": "bullets" }, "summary": "- Coffee is brewed from roasted beans\n- The beans are seeds of Coffea berries" } ``` #### Semrush Title Generator - **Docs**: https://scrappa.co/docs/semrush-api/semrush_content_titles - **Summary**: Generate article title ideas for a topic, grouped by style. - **Description**: Generates title ideas for a topic with the Semrush title generator, grouped into guide, listicle, question, and other styles. Generation is AI-bound and typically takes a few seconds. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `text` | string | Yes | The input text for the writer (a topic for titles/blogpost, the passage to rewrite or summarize otherwise). | **Example request:** ``` GET https://scrappa.co/api/semrush/content/titles?text=best+coffee+makers Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "semrush_content_titles", "text": "best coffee makers" }, "titles": { "guide": [ "The Complete Guide to the Best Coffee Makers" ], "listicle": [ "10 Best Coffee Makers for Every Budget" ], "wh": [ "What Are the Best Coffee Makers in 2026?" ], "other": [] } } ``` #### Semrush Trending Websites - **Docs**: https://scrappa.co/docs/semrush-api/semrush_trending - **Summary**: The 100 fastest-growing websites for a country and category, with a 12-month traffic series. - **Description**: Returns the 100 trending websites Semrush ranks for one country and category facet pair, with traffic, device split, month-over-month and year-over-year change, plus the aggregated 12-month traffic series. Country and category slugs are validated against the facets endpoint enumerations. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `country` | string | No | Trending country code (e.g. us, de, global). Defaults to us. See the facets endpoint for the full list. | | `category` | string | No | Trending category slug (e.g. all, arts_and_entertainment). Defaults to all. See the facets endpoint for the full list. | **Example request:** ``` GET https://scrappa.co/api/semrush/trending?country=global&category=all Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "semrush_trending", "country": "global", "category": "all" }, "country": "global", "category": "all", "domains": [ { "domain": "example.com", "total_traffic": 12800000, "mom": 0.42, "yoy": 3.1, "top_source": "search" } ], "traffic_series": [ { "date": "2026-06", "traffic": 41200000000 } ] } ``` #### Semrush Website Traffic - **Docs**: https://scrappa.co/docs/semrush-api/semrush_website_traffic - **Summary**: Traffic-Analytics block for a domain: visits, engagement, device split, and country distribution. - **Description**: Returns the Semrush Traffic Analytics block for a domain: monthly visits, pages per visit, average visit duration, bounce rate, desktop/mobile split, 3-month visit history, and traffic by country. Domains without coverage return covered=false (never charged). **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `domain` | string | Yes | Root domain or subdomain to analyze (e.g. semrush.com). Subdomains resolve to their root domain where Semrush only tracks the root. | **Example request:** ``` GET https://scrappa.co/api/semrush/website/traffic?domain=semrush.com Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "search_parameters": { "engine": "semrush_website_traffic", "domain": "semrush.com" }, "covered": true, "domain": "semrush.com", "visits": 24500000, "engagement": { "pages_per_visit": 4.2, "avg_visit_duration_seconds": 412, "bounce_rate": 0.41 }, "traffic_by_country": [ { "country": "us", "share": 0.32 } ] } ``` ### 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" } } ``` #### SimilarWeb Traffic Batch - **Docs**: https://scrappa.co/docs/similarweb-api/similarweb_batch - **Summary**: Queue traffic analytics for up to 1,000 unique domains - **Description**: Normalizes and deduplicates up to 1,000 domains or URLs, then processes them asynchronously with bounded concurrency. Temporary service failures are retried automatically, up to three total runs per domain. Poll the returned status URL until completion; successful domains are charged once and no-data results are not retried. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `domains` | array | Yes | JSON array containing up to 1,000 unique domains or URLs and no more than 2,000 submitted entries. | **Example request:** ``` GET https://scrappa.co/api/similarweb/batches?domains%5B0%5D=google.com&domains%5B1%5D=https%3A%2F%2Fwww.github.com%2Fopenai Header: X-API-KEY: your_api_key ``` **Example response (truncated):** ```json { "id": "0192fd31-7464-7ca0-bf88-4f854df84f15", "status": "queued", "submitted_total": 2, "total": 2 } ``` ### 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. ## Empty result sets Queries with no matching Startpage results return `200` with `data: []`, `total_results: 0`, and a `no_results_message` field. That way an empty result set is a valid answer you can rely on, while fetch problems are still reported as `503` errors with `retryable: true` and are not billed. ## 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 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 (default: 1, maximum: 500). The combination must satisfy (page - 1) * limit <= 5000: at most page 201 with the default limit of 25, or page 51 with limit 100. Follow pagination.has_more; narrow the search with filters for additional matches. | | `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": 201, "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%2F7611853750504914952%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. | | `count` | integer | No | Number of posts to return (1-50). | | `cursor` | string | No | Pagination cursor from a previous response. Omit for the first page. | **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. | | `cursor` | string | No | Pagination cursor from a previous response. Omit for the first page. | **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=7394627756635573022 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. | | `cursor` | string | No | Pagination cursor from a previous response. Omit for the first page. | **Example request:** ``` GET https://scrappa.co/api/tiktok/collections/posts?collection_id=7394627756635573022&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. | | `cursor` | string | No | Pagination cursor from a previous response. Omit for the first page. | **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. | | `cursor` | string | No | Pagination cursor from a previous response. Omit for the first page. | **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=7659874208872221471 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. | | `cursor` | string | No | Pagination cursor from a previous response. Omit for the first page. | **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**: Unavailable because the upstream endpoint was deprecated - **Description**: The upstream provider deprecated its similar-users endpoint without offering an equivalent replacement. This compatibility route remains available and returns an explicit, non-retryable HTTP 503 response. **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 { "success": false, "error_code": "tiktok_similar_users_upstream_deprecated", "message": "TikTok similar users is unavailable because the upstream provider deprecated this endpoint.", "retryable": false, "status_code": 503 } ``` #### 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. | | `cursor` | string | No | Pagination cursor from a previous response. Omit for the first page. | **Example request:** ``` GET https://scrappa.co/api/tiktok/collections/list?unique_id=tiktok&user_id=107955&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. | | `cursor` | string | No | Pagination cursor from a previous response. Omit for the first page. | **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 | | `tsid` | string | No | Trusted Shops ID (33 uppercase alphanumeric characters). | | `page` | integer | No | Page number (1-1000). | | `size` | integer | No | Reviews per page (1-100). | **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 | | `tsid` | string | No | Trusted Shops ID (33 uppercase alphanumeric characters). | **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. | | `per_page` | integer | No | Reviews per page (1-100). | | `date_posted` | string | No | Only return reviews from this window: any, last_12_months, last_6_months, last_3_months or last_30_days. | **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. | | `q` | string | No | Search term (1-500 characters). Alias for query. | | `query` | string | No | Search term (1-500 characters). | | `page` | integer | No | Page number (1-999). | | `per_page` | integer | No | Items per page (1-100). | | `order` | string | No | Sort order: relevance, newest_first, price_low_to_high or price_high_to_low. | | `brand_ids` | string | No | Comma-separated brand IDs to filter by. | | `color_ids` | string | No | Comma-separated colour IDs to filter by. | | `size_ids` | string | No | Comma-separated size IDs to filter by. | | `material_ids` | string | No | Comma-separated material IDs to filter by. | | `status_ids` | string | No | Comma-separated item-condition IDs to filter by. | | `price_from` | number | No | Minimum price. | | `price_to` | number | No | Maximum price. | **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. | | `q` | string | No | Search term (1-500 characters). Alias for query. | **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, localized condition, brand, size, relative upload age, starting shipping price, business status, source URL, and image fields before storing or scoring a product record. Set include_member_items=1 to make an additional upstream request for the seller’s other listing cards. A normal request costs one API request; enabling member items costs two API requests. Successful item responses use listing_status active, sold, hidden, or unavailable. Sold listings return HTTP 200 with availability set to https://schema.org/OutOfStock. A Vinted 404 returns listing_status=not_found because a public request cannot reliably distinguish deletion from a seller-hidden listing. An explicit no-index country shell returns unavailable_in_country. Proxy, blocking, and unparseable upstream pages return listing_status=temporarily_unavailable. Page-derived fields are nullable when Vinted omits them. shipping.from is the displayed starting price, not a guaranteed final delivery cost. upload_date remains Vinted’s localized relative text rather than an inferred timestamp. Always pass the listing country: Vinted may return a reduced page or 404 for an item that is visible in its home market. **Parameters:** | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `item_id` | string | Yes | The Vinted item ID | | `country` | string | No | Country code for Vinted domain. Defaults to FR. | | `include_member_items` | boolean | No | Set to 1 to make a second upstream request and return member_items. This opt-in request costs two API requests instead of one. | **Example request:** ``` GET https://scrappa.co/api/vinted/item-details?item_id=1234567890&country=DE&include_member_items=1 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", "condition_details": "Sehr gut", "upload_date": "vor 17 Stunden", "shipping": { "from": { "amount": 3.49, "currency": "EUR" } }, "business": false, "url": "https://www.vinted.de/items/1234567890-nike-air-max-90", "availability": "InStock", "listing_status": "active", "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, "member_items": [ { "id": "1234567891", "title": "Nike Sportswear Hoodie", "url": "https://www.vinted.de/items/1234567891-nike-sportswear-hoodie", "photo_url": "https://images1.vinted.net/t/01_01235_example/image.jpg", "price": { "amount": 22, "currency": "EUR" }, "favourite_count": 28 } ] } }, "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. Meta keywords are always a JSON array of strings: content="php,,laravel" returns data.keywords=["php","laravel"]. Empty entries are omitted, remaining order and duplicates are preserved, and missing or all-empty metadata returns []. Set javascript=true for client-rendered pages. In JSON responses, url is the requested URL (with a protocol added if omitted), and final_url is the destination after redirects. Relative links, image URLs, and favicons are resolved against final_url, preserving non-default ports. Query-only references keep the page path: ?page=2 at https://example.com/catalog/page?old=1 resolves to https://example.com/catalog/page?page=2. Relative dot segments are normalized: /catalog/../item becomes /item and /catalog/./item becomes /catalog/item. Reference queries and fragments are preserved. Default HTTP(S) ports may be omitted from resolved relative URLs. Only HTTP(S) destinations are returned; absolute HTTP(S) references are left unchanged. If the destination URL is unavailable, the URL used for the fetch is returned. 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 | | `javascript` | boolean | No | Set to true to execute page JavaScript before extracting content. This mode uses the Obscura browser engine through Scrappa's proxy layer. Default: false | | `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&javascript=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_locales - **Summary**: List supported locales - **Description**: Get the available locale combinations supported by Scrappa YouTube endpoints. **Example request:** ``` GET https://scrappa.co/api/youtube/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) | | `continuation` | string | No | Continuation token from a previous response, used to fetch the next page. | **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 | | `videoId` | string | No | YouTube video ID (11 characters). Alias for 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. HTTP 502/503 indicates a failed request, not an empty transcript. Check the HTTP status and Content-Type before parsing an error body; gateways may return non-JSON errors. Failed requests do not consume Scrappa credits. **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 | Upstream website temporarily rejected the request; Scrappa imposes no client rate limits | | 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 - x402 Discovery: https://scrappa.co/.well-known/x402 - Best MCP Servers for Web Scraping: https://scrappa.co/post/best-mcp-servers-web-scraping