import os
import time
import requests
API_KEY = os.environ["KWI_API_KEY"]
BASE_URL = "https://api.keywordinsights.ai"
HEADERS = {"X-API-Key": API_KEY}
def create_batch(keywords, domain, language="en", location="United States"):
"""Create a batch ranking order."""
response = requests.post(
f"{BASE_URL}/api/advanced-ranking/batch/order/",
headers=HEADERS,
json={
"keywords": keywords,
"domain": domain,
"language": language,
"location": location,
"include_word_count": True,
},
)
response.raise_for_status()
return response.json()
def wait_for_batch(order_id):
"""Poll until batch is complete."""
while True:
response = requests.get(
f"{BASE_URL}/api/advanced-ranking/batch/order/",
headers=HEADERS,
params={"order_id": order_id},
)
data = response.json()["result"]["payload"]
if data["status"] == "done":
return data["results"]
print("Processing...")
time.sleep(15)
# --- Run ---
keywords = [
"project management software",
"task management tool",
"team collaboration software",
]
result = create_batch(keywords, domain="asana.com")
order_id = result["order_id"]
print(f"Batch created: {order_id} (cost: {result['cost']} credits)")
results = wait_for_batch(order_id)
for item in results:
print(f"\n'{item['keyword']}': {item['n_domain_rankings']} URLs in top 100")
for r in item["domain_rankings"][:3]:
print(f" #{r['rank']} — {r['url']}")