Ecosia Search Scraper
DeprecatedPricing
from $1.99 / 1,000 search results
Ecosia Search Scraper
DeprecatedScrapes normalized organic search results from Ecosia.
Pricing
from $1.99 / 1,000 search results
Rating
0.0
(0)
Developer
Search API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Security
Limited permissionsShare
Collect source-backed organic web results from the public Ecosia Search page.
Input
| Field | Type | Default | Description |
|---|---|---|---|
query | string | — | Web-search keywords. |
maxItems | integer | 20 | Global result limit (1–500). |
maxPages | integer | 1 | Maximum pages to inspect (1–50). |
proxyConfiguration | object | — | Optional Apify proxy settings when direct access is limited. |
The full input contract is in .actor/input_schema.json.
Output
Each record includes a stable query-specific ID, organic result type, title and snippet aliases, source URL and domain fields, global and page positions, query and market context, retrieval provenance, nested search metadata, and scrapedAt. Empty optional fields are omitted. CAPTCHA and access boundaries fail the run without creating placeholder rows.
The default dataset has an Overview view and a Full details view. The exact output fields and types are in .actor/dataset_schema.json.
Retrieval
Ecosia server-renders its organic results and ships the same structured payload its own frontend uses inside <script id="vike_pageContext" type="application/json"> (data.results.mainline[], relatedQueries, totalNumberResults, pagination). The Actor reads that payload first over a plain HTTPS request to the same public /search URL (retrievalMethod: ecosia_serp_json) and falls back to the Chrome Playwright DOM path (retrievalMethod: live_chrome_dom) when the request is refused or the payload is absent. A configured proxy is never bypassed: proxied runs always use the browser transport.
On the browser path the payload is read from the server-rendered document response (captured in a pre-navigation hook, src/document-capture.js) rather than from page.content(), because hydration consumes the payload and the script node is not guaranteed to still be in the live DOM. The DOM still supplies the rows; the payload supplies the search-wide totalResults and the engine's own per-result fields (engineData), joined back by result URL. A 4xx document is a challenge/refusal page and is never read as a SERP.
Ecosia publishes no public JSON search API — api.ecosia.org answers /v1/notifications and /v2/favicons/* but returns 404 for every /v1|v2/search, /web, /serp, /results, /query and /v2/staan-proxy route — so there is no endpoint to switch to. /search is also Disallowed for User-agent: * in https://www.ecosia.org/robots.txt and is served behind Ecosia's interactive firewall challenge, which the Actor never attempts to solve.
How to use
Enter a web query and limits in the Apify Input tab, start the Actor, and inspect organic result records in the Output dataset.