WebAtlas API — v2

Search the independent web.

One HTTP endpoint. Send a query, get back ranked, deduplicated results from the WebAtlas index — no scraping, no headless browsers, no rate-limit roulette.

The WebAtlas API gives programmatic access to the same index that powers WebAtlas search. Every request is authenticated with an API key tied to a subscription plan, and every response is plain JSON — ranked by relevance, deduplicated by domain, and optionally filtered for safe search.

Authentication

Every request needs a key query parameter. Keys are issued per plan from your WebAtlas Cloud dashboard after subscribing, and look like this:

wa_3f8a1b2c4d9e7f1a0b6c5d4e3f2a1b0c9d8e7f6a5b4c3d2e

Keys are passed in the URL, not in a header — this keeps simple GET requests copy-pasteable in a browser or curl one-liner.

Keep your key private. Anyone with your key can consume your monthly quota. If a key leaks, regenerate it from the dashboard — the old key stops working immediately.

Quickstart

A minimal search request with curl:

curl
                            "https://cloud.webatlasindex.pl/api.php?q=polish+search+engines&key=YOUR_API_KEY"
                    

The same request in JavaScript:

const res = await fetch(
                            "https://cloud.webatlasindex.pl/api.php?q=polish+search+engines&key=YOUR_API_KEY"
                            );
                            const data = await res.json();
                            console.log(data.results);

And in Python:

import requests

                            res = requests.get(
                            "https://cloud.webatlasindex.pl/api.php",
                            params={"q": "polish search
                                engines", "key": "YOUR_API_KEY"},
                            )
                            data = res.json()
                            print(data["results"])
                    

Endpoint

GET https://cloud.webatlasindex.pl/api.php

This is the only endpoint in the API. All search functionality is controlled through query parameters below.

Parameters

Parameter Type Description
keyrequired string Your API key, format wa_<48 hex chars>. Get one from the dashboard.
qrequired string Search query. Max 200 characters. URL-encode spaces and special characters.
langoptional string 2-letter language filter (e.g. pl, en, de). Non-letter characters are stripped automatically.
dateoptional string Filter by publish date. Accepts any format strtotime() understands (e.g. 2026-06-01). Invalid dates are ignored silently.
safeoptional boolean Set to true to exclude adult content and known unsafe domains from results. Default is off.
pageoptional integer Page number for pagination, starting at 1. Default 1.

Response format

All responses are JSON with a top-level success boolean.

Successful response

{
                            "success": true,
                            "query": "polish search",
                            "pagination": {
                            "page": 1,
                            "total": 5,
                            "total_pages": 1,
                            "max_reached": false
                            },
                            "results": [
                            {
                            "url": "https://webatlasindex.pl/example-page",
                            "title": "WebAtlas Index — Polish
                                independent website index",
                            "description": "Search results from the
                                WebAtlas Index for quality, ad-free content.",
                            "language": "pl",
                            "publish_date": "2026-06-01",
                            "indexed_at": "2026-06-10
                                12:00:00"
                            }
                            ]
                            }

Fields

pagination.total Total matching results across all pages, capped at 20.
pagination.total_pages Number of pages available, 20 results per page.
pagination.max_reached True when the 20-result cap was hit — refine your query for more precision rather than paging further.
results[].url Canonical URL of the indexed page.
results[].title Page title as indexed.
results[].description Extracted page description or summary.
results[].language Detected 2-letter language code.
results[].publish_date Publish date if detected, otherwise null.
results[].indexed_at Timestamp when WebAtlas last indexed the page.

Error response

{
                            "success": false,
                            "error": {
                            "code": 401,
                            "message": "Invalid or missing API
                                key."
                            }
                            }

Errors

The HTTP status code always matches error.code in the response body.

400
Missing or invalid q parameter, or query exceeds 200 characters.
401
API key missing, malformed, or not found.
403
API key is disabled, or its plan is unsupported.
405
Wrong HTTP method — the API only accepts GET.
429
Rate limit or monthly quota exceeded. See limits below.
500
Internal server error. Safe to retry after a short delay.
503
Authentication or search backend temporarily unavailable. Safe to retry.

Plans & quotas

Every API key belongs to exactly one plan. Quota resets on the 1st of each month.

Plan Price Monthly quota Rate limit
Starter $2/mo 1,000 requests 30 req/min
Growth $18/mo 10,000 requests 50 req/min
Business $80/mo 50,000 requests 90 req/min
Agency $150/mo 100,000 requests 300 req/min

Manage your subscription, view usage, and regenerate keys anytime from the Dashboard.

Rate limits

Rate limits are enforced per minute, per API key, on top of your monthly quota. Exceeding either returns 429 with a message identifying which limit was hit.

  • Per-minute limit resets every minute — back off and retry after a few seconds.
  • Monthly quota resets on the 1st — upgrade your plan from the dashboard if you're consistently hitting it.
  • Results are cached for performance. Identical queries (same q, lang, date, safe, page) are served from our cache in accordance with our Usage License (12–48h refresh cycle) and Privacy Policy, reducing latency without impacting your quota.