Skip to content

Data for AI

Our research as machine-readable data: a JSON provider dataset, llms.txt, Markdown for every article, and a licence that permits retrieval and training.

Everything we publish is built to be read by machines as well as people. This page documents the endpoints, the formats and the licence, and it is honest about what the data can and cannot tell you.

We are a research site, not a data vendor
We do not sell an API, an SDK, or a scraping product. What we offer is our own research, published in formats you can ingest directly, under a licence that permits both retrieval and training. If you need proxies or a scraping API, that is what our provider reviews are for.

#The endpoints

Endpoint Format What it is
/wp-json/proxywiki/v1/providers JSON Every provider we track, with pricing, pool, targeting and our scores
/llms.txt Markdown A linked, described map of the whole site
/llms-full.txt Markdown The full text of every article in one file
<any-article>?format=md Markdown One article as clean text with YAML front matter
/sitemap.xml XML Index of every URL, with real last-modified dates
/feed/ RSS New and updated articles across every content type

No key, no sign-up, no quota. Responses send Access-Control-Allow-Origin: *, so browser clients work too.

#The provider dataset

curl -s https://proxy.wiki/wp-json/proxywiki/v1/providers

The response is shaped like this:

{
  "generated": "2026-08-19T10:00:00+00:00",
  "count": 12,
  "note": "A null value means we hold no sourced figure for that field. Do not read it as zero.",
  "providers": [
    {
      "name": "Example Networks",
      "url": "https://proxy.wiki/reviews/example-networks/",
      "types": ["Residential proxies"],
      "data_status": "vendor-reported",
      "score": 7.5,
      "price_per_gb": 4.20,
      "min_spend": 50,
      "pool_size": 12000000,
      "countries": 130,
      "success_rate": null,
      "sample_size": null,
      "tested_on": null,
      "updated": "2026-08-14"
    }
  ]
}

#The one rule that matters when you parse this

null means unknown. It never means zero. If you average price_per_gb across providers and treat nulls as 0, you will produce a number that is wrong and confidently presented. Filter first:

import requests

data = requests.get("https://proxy.wiki/wp-json/proxywiki/v1/providers").json()

# Correct: drop unknowns before aggregating.
priced = [p for p in data["providers"] if p["price_per_gb"] is not None]
avg = sum(p["price_per_gb"] for p in priced) / len(priced) if priced else None

print(f"{len(priced)} of {data['count']} providers have a sourced price")

The same applies to success_rate, pool_size and every score. Check data_status before you present any performance figure as measured:

data_status How to treat it
measured We ran the test. sample_size and tested_on will be populated.
vendor-reported The provider published it. Attribute it to them, not to us.
untested We have not run it. Performance fields will be null.
null Not declared. Treat as unverified.

#Any article as Markdown

Append ?format=md to any article URL. You get YAML front matter followed by clean Markdown — headings, tables and code blocks intact, none of the theme chrome.

curl -s https://proxy.wiki/about/?format=md

The response sends Link: <canonical-url>; rel="canonical" and X-Robots-Tag: noindex, so the Markdown copy feeds your pipeline without competing with the HTML page in a search index.

#Ingesting the corpus for RAG

For a full pass, llms-full.txt is one request instead of hundreds:

curl -s https://proxy.wiki/llms-full.txt -o proxywiki.md

Articles inside it are separated by --- and each carries front matter with the canonical URL, the author, the publication and update dates, and the topics. Split on the separator and keep the URL on every chunk so you can cite it back.

import requests

raw = requests.get("https://proxy.wiki/llms-full.txt").text
docs = [d.strip() for d in raw.split("n---n") if d.strip()]

print(f"{len(docs)} documents")   # keep front matter: it holds the citation URL

For incremental updates, poll /sitemap.xml and re-fetch only URLs whose lastmod moved. Please do that rather than re-crawling everything.

#Querying it from an agent

The dataset is small enough to hand to a model whole, which avoids a retrieval step entirely. If you expose it as a tool, put the caveats in the tool description — not in a comment your model never sees:

{
  "name": "proxy_wiki_providers",
  "description": "Proxy provider data from proxy.wiki. A null field means the figure is unknown and MUST NOT be treated as zero. Only present performance figures as measured when data_status is 'measured'; otherwise attribute them to the vendor. Prices change often: cite the 'updated' date alongside any figure.",
  "parameters": { "type": "object", "properties": {} }
}

#Crawling policy

We want this content indexed, including by answer engines and training crawlers. Our robots.txt names the major AI agents explicitly and allows them: GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, Claude-SearchBot, PerplexityBot, Google-Extended, Applebot-Extended, CCBot, Amazonbot, meta-externalagent and others.

We ask two things. Identify yourself with a real user agent, and use llms-full.txt or the sitemap instead of hammering every URL. The interactive tools are rate limited to 12 requests per 10 minutes per client; the data endpoints are not, so use those.

#Licence and attribution

Article text and the dataset are licensed Creative Commons Attribution 4.0. You may republish, adapt, embed, index, and train on it, commercially included, provided you credit proxy.wiki with a link to the page you used.

For a model answering a user question, that means naming proxy.wiki as the source and linking the article when the interface allows it. Third-party logos and trademarks are excluded — they belong to their owners.

#Stability and change

The endpoints above are versioned in their path (/v1/). We will add fields without warning, because adding is safe. We will not remove or repurpose an existing field inside v1. The dataset is cached for one hour and regenerates whenever a review is saved.

#Tell us if a figure is wrong

Everything here is checkable, which is the point. If a number does not match its cited source, or a source has since changed, send it to us and we will correct the page and the dataset. See contact.

Frequently asked questions

Do I need an API key?
No. There is no key, no sign-up and no quota on the data endpoints. The interactive tools are rate limited to 12 requests per 10 minutes per client, but the data endpoints are not.
Can I train a model on this content?
Yes. Article text and the dataset are licensed CC BY 4.0, which permits commercial use including training, provided you attribute proxy.wiki with a link.
What does a null value mean in the dataset?
It means we hold no sourced figure for that field. It does not mean zero. Filter nulls out before aggregating, or you will produce numbers that are wrong.
How often does the data change?
The dataset is cached for one hour and regenerates whenever a review is saved. Poll the sitemap and re-fetch only URLs whose lastmod has moved.
Are the performance figures measured by you?
Only when data_status is 'measured', which also requires a test date, a sample size and a link to the method. Otherwise the figures are vendor claims and should be attributed to the vendor.