Cloudflare API Is Surprisingly Powerful
Cloudflare free plan includes API access to DNS management, analytics, cache purging, and more. No paid plan needed for most operations.
Setup
import requests
API_TOKEN = "your_cloudflare_api_token"
HEADERS = {"Authorization": f"Bearer {API_TOKEN}", "Content-Type": "application/json"}
BASE = "https://api.cloudflare.com/client/v4"
Create a token at dash.cloudflare.com/profile/api-tokens.
List All Zones (Domains)
def list_zones():
r = requests.get(f"{BASE}/zones", headers=HEADERS)
zones = r.json()["result"]
return [{"name": z["name"], "id": z["id"], "status": z["status"]} for z in zones]
for z in list_zones():
print(f"{z[name]} ({z[status]}) — {z[id]}")
Manage DNS Records
def list_dns(zone_id):
r = requests.get(f"{BASE}/zones/{zone_id}/dns_records", headers=HEADERS)
return [{"type": d["type"], "name": d["name"], "content": d["content"]}
for d in r.json()["result"]]
def add_dns(zone_id, record_type, name, content):
data = {"type": record_type, "name": name, "content": content, "ttl": 1}
r = requests.post(f"{BASE}/zones/{zone_id}/dns_records",
headers=HEADERS, json=data)
return r.json()["success"]
# Add an A record
add_dns("zone_id", "A", "api.example.com", "1.2.3.4")
Purge Cache
def purge_cache(zone_id, urls=None):
if urls:
data = {"files": urls}
else:
data = {"purge_everything": True}
r = requests.post(f"{BASE}/zones/{zone_id}/purge_cache",
headers=HEADERS, json=data)
return r.json()["success"]
# Purge specific URLs
purge_cache("zone_id", ["https://example.com/style.css"])
# Purge everything
purge_cache("zone_id")
Get Analytics
def get_analytics(zone_id):
r = requests.get(f"{BASE}/zones/{zone_id}/analytics/dashboard",
headers=HEADERS, params={"since": "-1440"})
data = r.json()["result"]["totals"]
return {
"requests": data["requests"]["all"],
"bandwidth": data["bandwidth"]["all"],
"threats": data["threats"]["all"],
"pageviews": data["pageviews"]["all"]
}
Real Use Cases
- Automated deployments — purge cache after deploy
- Dynamic DNS — update A records for home servers
- Multi-site management — manage dozens of domains from one script
- Monitoring — track bandwidth and threat trends
- Disaster recovery — quickly switch DNS in an incident
Free Plan API Limits
- 1200 API calls per 5 minutes
- All DNS operations included
- Analytics, cache purge, firewall rules
- Workers (100K requests/day free)
More from me: 10 Dev Tools I Use Daily | 77 Scrapers on a Schedule | 150+ Free APIs
Top comments (0)