@nordsym/apiclaw 1.1.2 ā 1.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/EARN-CREDITS-SPEC.md +197 -0
- package/README.md +11 -7
- package/STATUS.md +16 -15
- package/VISION.md +123 -0
- package/dist/credentials.d.ts.map +1 -1
- package/dist/credentials.js +11 -0
- package/dist/credentials.js.map +1 -1
- package/dist/execute.d.ts.map +1 -1
- package/dist/execute.js +75 -0
- package/dist/execute.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/proxy.d.ts.map +1 -1
- package/dist/proxy.js +1 -1
- package/dist/proxy.js.map +1 -1
- package/dist/registry/apis.json +93516 -7139
- package/dist/registry/apis_expanded.json +3123 -3
- package/landing/public/book/index.html +339 -0
- package/landing/src/app/docs/page.tsx +142 -115
- package/landing/src/app/earn/page.tsx +305 -0
- package/landing/src/app/page.tsx +16 -11
- package/landing/src/lib/apis.json +1 -116054
- package/landing/src/lib/stats.json +5 -5
- package/package.json +4 -1
- package/scripts/add-public-apis.py +625 -0
- package/scripts/apisguru-data.json +158837 -0
- package/scripts/bonus-batch.py +250 -0
- package/scripts/bulk-add-apisguru.js +122 -0
- package/scripts/expand-2026-batch.py +335 -0
- package/scripts/expand-from-github.py +460 -0
- package/scripts/expand-n4ze3m.py +198 -0
- package/scripts/expand-niche-batch.py +269 -0
- package/scripts/expand-nordic-niche.py +189 -0
- package/scripts/expand-tonnyL.py +343 -0
- package/scripts/final-batch.py +315 -0
- package/scripts/final-push-06.py +242 -0
- package/scripts/mega-expansion.py +495 -0
- package/scripts/mega-final-06.py +512 -0
- package/scripts/more-apis.py +353 -0
- package/scripts/night-batch-05.py +546 -0
- package/scripts/night-batch-05b.py +427 -0
- package/scripts/night-expansion-02-23-batch2.py +284 -0
- package/scripts/night-expansion-02-23.py +383 -0
- package/scripts/night-expansion-03-batch2.py +336 -0
- package/scripts/night-expansion-03-batch3.py +392 -0
- package/scripts/night-expansion-03.py +573 -0
- package/scripts/night-expansion-04-23.py +461 -0
- package/scripts/night-expansion-05-23-batch2.py +431 -0
- package/scripts/night-expansion-05-23-batch3.py +366 -0
- package/scripts/night-expansion-05-23-final.py +349 -0
- package/scripts/night-expansion-05-23.py +540 -0
- package/scripts/night-expansion-06-23-batch2.py +261 -0
- package/scripts/night-expansion-06-23-batch3.py +213 -0
- package/scripts/night-expansion-06-23-batch4.py +261 -0
- package/scripts/night-expansion-06-23.py +309 -0
- package/scripts/night-expansion-06.py +325 -0
- package/scripts/night-expansion.py +441 -0
- package/scripts/night-final-batch-04-23.py +547 -0
- package/scripts/night-mega-batch-04-23.py +874 -0
- package/scripts/super-final-06.py +341 -0
- package/src/credentials.ts +12 -0
- package/src/execute.ts +93 -0
- package/src/index.ts +1 -1
- package/src/proxy.ts +1 -1
- package/src/registry/apis.json +93516 -7139
- package/src/registry/apis_expanded.json +3123 -3
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
APIClaw Night Expansion - Auto-fetch and add new APIs
|
|
4
|
+
Sources: apis.guru, Awesome APIs lists, OpenAPI directories
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import json
|
|
8
|
+
import re
|
|
9
|
+
import urllib.request
|
|
10
|
+
import urllib.error
|
|
11
|
+
from datetime import datetime
|
|
12
|
+
from pathlib import Path
|
|
13
|
+
|
|
14
|
+
REGISTRY_PATH = Path(__file__).parent.parent / "src" / "registry" / "apis.json"
|
|
15
|
+
|
|
16
|
+
def generate_id(name: str) -> str:
|
|
17
|
+
"""Generate clean ID from name"""
|
|
18
|
+
clean = re.sub(r'[^a-z0-9]+', '-', name.lower()).strip('-')
|
|
19
|
+
return clean[:50]
|
|
20
|
+
|
|
21
|
+
def fetch_json(url: str, timeout: int = 30) -> dict:
|
|
22
|
+
"""Fetch JSON from URL"""
|
|
23
|
+
try:
|
|
24
|
+
req = urllib.request.Request(url, headers={'User-Agent': 'APIClaw/1.0'})
|
|
25
|
+
with urllib.request.urlopen(req, timeout=timeout) as resp:
|
|
26
|
+
return json.loads(resp.read().decode())
|
|
27
|
+
except Exception as e:
|
|
28
|
+
print(f" Error fetching {url}: {e}")
|
|
29
|
+
return None
|
|
30
|
+
|
|
31
|
+
def load_registry() -> dict:
|
|
32
|
+
"""Load existing registry"""
|
|
33
|
+
with open(REGISTRY_PATH, 'r') as f:
|
|
34
|
+
return json.load(f)
|
|
35
|
+
|
|
36
|
+
def save_registry(registry: dict):
|
|
37
|
+
"""Save registry"""
|
|
38
|
+
with open(REGISTRY_PATH, 'w') as f:
|
|
39
|
+
json.dump(registry, f, indent=2)
|
|
40
|
+
|
|
41
|
+
def get_existing_ids(registry: dict) -> set:
|
|
42
|
+
"""Get set of existing API IDs"""
|
|
43
|
+
return {api['id'] for api in registry['apis']}
|
|
44
|
+
|
|
45
|
+
def parse_apis_guru(data: dict) -> list:
|
|
46
|
+
"""Parse apis.guru format into our registry format"""
|
|
47
|
+
apis = []
|
|
48
|
+
|
|
49
|
+
for provider, info in data.items():
|
|
50
|
+
try:
|
|
51
|
+
preferred = info.get('preferred', '')
|
|
52
|
+
versions = info.get('versions', {})
|
|
53
|
+
|
|
54
|
+
if not versions:
|
|
55
|
+
continue
|
|
56
|
+
|
|
57
|
+
version_info = versions.get(preferred, list(versions.values())[0])
|
|
58
|
+
api_info = version_info.get('info', {})
|
|
59
|
+
|
|
60
|
+
name = api_info.get('title', provider)
|
|
61
|
+
description = api_info.get('description', '')[:500] if api_info.get('description') else f"API for {name}"
|
|
62
|
+
|
|
63
|
+
# Extract category from x-apisguru-categories
|
|
64
|
+
categories = api_info.get('x-apisguru-categories', [])
|
|
65
|
+
category = categories[0].capitalize() if categories else 'API Services'
|
|
66
|
+
|
|
67
|
+
# Clean category names
|
|
68
|
+
category_map = {
|
|
69
|
+
'financial': 'Finance',
|
|
70
|
+
'cloud': 'Cloud Services',
|
|
71
|
+
'machine_learning': 'Machine Learning',
|
|
72
|
+
'ecommerce': 'E-Commerce',
|
|
73
|
+
'iot': 'IoT',
|
|
74
|
+
'payment': 'Payments',
|
|
75
|
+
'security': 'Security',
|
|
76
|
+
'social': 'Social Media',
|
|
77
|
+
'marketing': 'Marketing',
|
|
78
|
+
'analytics': 'Analytics',
|
|
79
|
+
'media': 'Media',
|
|
80
|
+
'messaging': 'Communication',
|
|
81
|
+
'location': 'Geocoding',
|
|
82
|
+
'storage': 'Cloud Storage',
|
|
83
|
+
'developer_tools': 'Development',
|
|
84
|
+
'telecom': 'Communication',
|
|
85
|
+
'text': 'Text Analysis',
|
|
86
|
+
'energy': 'Utilities',
|
|
87
|
+
'enterprise': 'Business',
|
|
88
|
+
'backend': 'Backend Services',
|
|
89
|
+
'open_data': 'Open Data',
|
|
90
|
+
'search': 'Search',
|
|
91
|
+
'entertainment': 'Entertainment',
|
|
92
|
+
'email': 'Email',
|
|
93
|
+
'hosting': 'Hosting',
|
|
94
|
+
'collaboration': 'Collaboration',
|
|
95
|
+
'support': 'Customer Support',
|
|
96
|
+
'transport': 'Transportation'
|
|
97
|
+
}
|
|
98
|
+
category = category_map.get(category.lower(), category)
|
|
99
|
+
|
|
100
|
+
# Get contact/link info
|
|
101
|
+
contact = api_info.get('contact', {})
|
|
102
|
+
link = contact.get('url', '')
|
|
103
|
+
if not link:
|
|
104
|
+
link = f"https://{provider}"
|
|
105
|
+
|
|
106
|
+
# Determine auth type
|
|
107
|
+
auth = 'apiKey' # Most OpenAPI specs use API keys
|
|
108
|
+
|
|
109
|
+
api_id = generate_id(name)
|
|
110
|
+
|
|
111
|
+
apis.append({
|
|
112
|
+
"id": api_id,
|
|
113
|
+
"name": name,
|
|
114
|
+
"description": description[:300],
|
|
115
|
+
"category": category,
|
|
116
|
+
"auth": auth,
|
|
117
|
+
"https": True,
|
|
118
|
+
"cors": "unknown",
|
|
119
|
+
"link": link,
|
|
120
|
+
"pricing": "unknown",
|
|
121
|
+
"keywords": categories[:5] if categories else [],
|
|
122
|
+
"source": "apis.guru"
|
|
123
|
+
})
|
|
124
|
+
except Exception as e:
|
|
125
|
+
print(f" Error parsing {provider}: {e}")
|
|
126
|
+
continue
|
|
127
|
+
|
|
128
|
+
return apis
|
|
129
|
+
|
|
130
|
+
def add_awesome_apis_batch() -> list:
|
|
131
|
+
"""Add curated APIs from Awesome APIs and other sources"""
|
|
132
|
+
apis = [
|
|
133
|
+
# DevOps & CI/CD
|
|
134
|
+
{"name": "Jenkins API", "description": "Jenkins automation server REST API", "category": "Development", "link": "https://www.jenkins.io/doc/book/using/remote-access-api/", "auth": "apiKey"},
|
|
135
|
+
{"name": "Terraform Cloud API", "description": "HashiCorp Terraform Cloud REST API", "category": "Development", "link": "https://developer.hashicorp.com/terraform/cloud-docs/api-docs", "auth": "apiKey"},
|
|
136
|
+
{"name": "Ansible Tower API", "description": "Red Hat Ansible Automation Platform API", "category": "Development", "link": "https://docs.ansible.com/ansible-tower/latest/html/towerapi/", "auth": "apiKey"},
|
|
137
|
+
{"name": "Pulumi API", "description": "Infrastructure as Code platform API", "category": "Development", "link": "https://www.pulumi.com/docs/reference/service-rest-api/", "auth": "apiKey"},
|
|
138
|
+
|
|
139
|
+
# Database & Data
|
|
140
|
+
{"name": "MongoDB Atlas API", "description": "Cloud database service management API", "category": "Databases", "link": "https://www.mongodb.com/docs/atlas/api/", "auth": "apiKey"},
|
|
141
|
+
{"name": "Redis Cloud API", "description": "Redis Enterprise Cloud API", "category": "Databases", "link": "https://docs.redis.com/latest/rc/api/", "auth": "apiKey"},
|
|
142
|
+
{"name": "Elastic Cloud API", "description": "Elasticsearch Service API", "category": "Databases", "link": "https://www.elastic.co/guide/en/cloud/current/ec-restful-api.html", "auth": "apiKey"},
|
|
143
|
+
{"name": "Fauna API", "description": "Serverless database API", "category": "Databases", "link": "https://docs.fauna.com/fauna/current/reference/http/", "auth": "apiKey"},
|
|
144
|
+
{"name": "PlanetScale API", "description": "MySQL-compatible serverless database", "category": "Databases", "link": "https://docs.planetscale.com/docs/concepts/planetscale-api-overview", "auth": "apiKey"},
|
|
145
|
+
{"name": "Neon API", "description": "Serverless Postgres API", "category": "Databases", "link": "https://neon.tech/docs/introduction/about", "auth": "apiKey"},
|
|
146
|
+
{"name": "Turso API", "description": "Edge SQLite database API", "category": "Databases", "link": "https://docs.turso.tech/reference/client-access", "auth": "apiKey"},
|
|
147
|
+
|
|
148
|
+
# E-commerce
|
|
149
|
+
{"name": "Shopify Storefront API", "description": "Build custom shopping experiences", "category": "E-Commerce", "link": "https://shopify.dev/docs/api/storefront", "auth": "OAuth"},
|
|
150
|
+
{"name": "WooCommerce API", "description": "WordPress e-commerce REST API", "category": "E-Commerce", "link": "https://woocommerce.github.io/woocommerce-rest-api-docs/", "auth": "apiKey"},
|
|
151
|
+
{"name": "BigCommerce API", "description": "E-commerce platform API", "category": "E-Commerce", "link": "https://developer.bigcommerce.com/docs/rest-catalog", "auth": "apiKey"},
|
|
152
|
+
{"name": "Magento API", "description": "Adobe Commerce REST API", "category": "E-Commerce", "link": "https://devdocs.magento.com/guides/v2.4/rest/bk-rest.html", "auth": "OAuth"},
|
|
153
|
+
{"name": "Saleor API", "description": "Open-source e-commerce GraphQL API", "category": "E-Commerce", "link": "https://docs.saleor.io/docs/developer/api-conventions", "auth": "apiKey"},
|
|
154
|
+
|
|
155
|
+
# Marketing & Analytics
|
|
156
|
+
{"name": "HubSpot API", "description": "CRM and marketing automation API", "category": "Marketing", "link": "https://developers.hubspot.com/docs/api/overview", "auth": "OAuth"},
|
|
157
|
+
{"name": "Mailchimp API", "description": "Email marketing platform API", "category": "Marketing", "link": "https://mailchimp.com/developer/marketing/api/", "auth": "apiKey"},
|
|
158
|
+
{"name": "Mixpanel API", "description": "Product analytics API", "category": "Analytics", "link": "https://developer.mixpanel.com/reference/overview", "auth": "apiKey"},
|
|
159
|
+
{"name": "Amplitude API", "description": "Product analytics platform API", "category": "Analytics", "link": "https://www.docs.developers.amplitude.com/", "auth": "apiKey"},
|
|
160
|
+
{"name": "Segment API", "description": "Customer data platform API", "category": "Analytics", "link": "https://segment.com/docs/connections/sources/catalog/libraries/server/http-api/", "auth": "apiKey"},
|
|
161
|
+
{"name": "Plausible API", "description": "Privacy-friendly analytics API", "category": "Analytics", "link": "https://plausible.io/docs/stats-api", "auth": "apiKey"},
|
|
162
|
+
{"name": "PostHog API", "description": "Open-source product analytics API", "category": "Analytics", "link": "https://posthog.com/docs/api", "auth": "apiKey"},
|
|
163
|
+
|
|
164
|
+
# Communication & Messaging
|
|
165
|
+
{"name": "Twilio API", "description": "Cloud communications platform", "category": "Communication", "link": "https://www.twilio.com/docs/usage/api", "auth": "apiKey"},
|
|
166
|
+
{"name": "SendGrid API", "description": "Email delivery service API", "category": "Email", "link": "https://docs.sendgrid.com/api-reference/how-to-use-the-sendgrid-v3-api/authentication", "auth": "apiKey"},
|
|
167
|
+
{"name": "Vonage API", "description": "Communication APIs (formerly Nexmo)", "category": "Communication", "link": "https://developer.vonage.com/en/api", "auth": "apiKey"},
|
|
168
|
+
{"name": "Pusher API", "description": "Real-time messaging API", "category": "Communication", "link": "https://pusher.com/docs/channels/library_auth_reference/rest-api/", "auth": "apiKey"},
|
|
169
|
+
{"name": "Ably API", "description": "Real-time messaging infrastructure", "category": "Communication", "link": "https://ably.com/docs/api", "auth": "apiKey"},
|
|
170
|
+
{"name": "Stream API", "description": "Activity feeds and chat API", "category": "Communication", "link": "https://getstream.io/docs/rest/", "auth": "apiKey"},
|
|
171
|
+
{"name": "Intercom API", "description": "Customer messaging platform API", "category": "Customer Support", "link": "https://developers.intercom.com/intercom-api-reference/reference", "auth": "apiKey"},
|
|
172
|
+
{"name": "Zendesk API", "description": "Customer service platform API", "category": "Customer Support", "link": "https://developer.zendesk.com/api-reference/", "auth": "apiKey"},
|
|
173
|
+
{"name": "Freshdesk API", "description": "Customer support software API", "category": "Customer Support", "link": "https://developers.freshdesk.com/api/", "auth": "apiKey"},
|
|
174
|
+
|
|
175
|
+
# AI & Machine Learning
|
|
176
|
+
{"name": "OpenAI API", "description": "GPT models and AI services", "category": "Machine Learning", "link": "https://platform.openai.com/docs/api-reference", "auth": "apiKey"},
|
|
177
|
+
{"name": "Anthropic API", "description": "Claude AI assistant API", "category": "Machine Learning", "link": "https://docs.anthropic.com/claude/reference/getting-started-with-the-api", "auth": "apiKey"},
|
|
178
|
+
{"name": "Cohere API", "description": "Enterprise AI platform API", "category": "Machine Learning", "link": "https://docs.cohere.com/reference/about", "auth": "apiKey"},
|
|
179
|
+
{"name": "Replicate API", "description": "Run ML models in the cloud", "category": "Machine Learning", "link": "https://replicate.com/docs/reference/http", "auth": "apiKey"},
|
|
180
|
+
{"name": "Hugging Face API", "description": "ML model inference API", "category": "Machine Learning", "link": "https://huggingface.co/docs/api-inference/index", "auth": "apiKey"},
|
|
181
|
+
{"name": "Stability AI API", "description": "Image generation API", "category": "Machine Learning", "link": "https://platform.stability.ai/docs/api-reference", "auth": "apiKey"},
|
|
182
|
+
{"name": "ElevenLabs API", "description": "AI voice synthesis API", "category": "Machine Learning", "link": "https://docs.elevenlabs.io/api-reference/text-to-speech", "auth": "apiKey"},
|
|
183
|
+
{"name": "AssemblyAI API", "description": "Speech-to-text AI API", "category": "Machine Learning", "link": "https://www.assemblyai.com/docs/", "auth": "apiKey"},
|
|
184
|
+
{"name": "Deepgram API", "description": "Speech recognition API", "category": "Machine Learning", "link": "https://developers.deepgram.com/docs/", "auth": "apiKey"},
|
|
185
|
+
{"name": "Perplexity API", "description": "AI search and research API", "category": "Machine Learning", "link": "https://docs.perplexity.ai/", "auth": "apiKey"},
|
|
186
|
+
|
|
187
|
+
# Cloud Platforms
|
|
188
|
+
{"name": "Vercel API", "description": "Frontend deployment platform API", "category": "Cloud Services", "link": "https://vercel.com/docs/rest-api", "auth": "apiKey"},
|
|
189
|
+
{"name": "Netlify API", "description": "Web deployment platform API", "category": "Cloud Services", "link": "https://docs.netlify.com/api/get-started/", "auth": "apiKey"},
|
|
190
|
+
{"name": "Railway API", "description": "Infrastructure deployment platform", "category": "Cloud Services", "link": "https://docs.railway.app/reference/public-api", "auth": "apiKey"},
|
|
191
|
+
{"name": "Render API", "description": "Cloud application platform API", "category": "Cloud Services", "link": "https://api-docs.render.com/reference/introduction", "auth": "apiKey"},
|
|
192
|
+
{"name": "Fly.io API", "description": "Distributed application platform", "category": "Cloud Services", "link": "https://fly.io/docs/reference/machines/", "auth": "apiKey"},
|
|
193
|
+
{"name": "Cloudflare API", "description": "CDN and security services API", "category": "Cloud Services", "link": "https://developers.cloudflare.com/api/", "auth": "apiKey"},
|
|
194
|
+
{"name": "DigitalOcean API", "description": "Cloud infrastructure API", "category": "Cloud Services", "link": "https://docs.digitalocean.com/reference/api/", "auth": "apiKey"},
|
|
195
|
+
{"name": "Linode API", "description": "Cloud computing services API", "category": "Cloud Services", "link": "https://www.linode.com/docs/api/", "auth": "apiKey"},
|
|
196
|
+
{"name": "Vultr API", "description": "Cloud compute API", "category": "Cloud Services", "link": "https://www.vultr.com/api/", "auth": "apiKey"},
|
|
197
|
+
{"name": "Hetzner Cloud API", "description": "European cloud platform API", "category": "Cloud Services", "link": "https://docs.hetzner.cloud/", "auth": "apiKey"},
|
|
198
|
+
|
|
199
|
+
# Payments
|
|
200
|
+
{"name": "Stripe API", "description": "Payment processing platform", "category": "Payments", "link": "https://stripe.com/docs/api", "auth": "apiKey"},
|
|
201
|
+
{"name": "Square API", "description": "Payment and commerce platform", "category": "Payments", "link": "https://developer.squareup.com/reference/square", "auth": "OAuth"},
|
|
202
|
+
{"name": "Braintree API", "description": "PayPal payment gateway API", "category": "Payments", "link": "https://developer.paypal.com/braintree/docs/start/overview", "auth": "apiKey"},
|
|
203
|
+
{"name": "Adyen API", "description": "Global payments platform API", "category": "Payments", "link": "https://docs.adyen.com/api-explorer/", "auth": "apiKey"},
|
|
204
|
+
{"name": "Paddle API", "description": "SaaS billing platform API", "category": "Payments", "link": "https://developer.paddle.com/api-reference/about-paddle-api/", "auth": "apiKey"},
|
|
205
|
+
{"name": "Lemon Squeezy API", "description": "Digital product payments API", "category": "Payments", "link": "https://docs.lemonsqueezy.com/api", "auth": "apiKey"},
|
|
206
|
+
{"name": "Wise API", "description": "International payments API", "category": "Payments", "link": "https://docs.wise.com/api-docs/", "auth": "apiKey"},
|
|
207
|
+
{"name": "Plaid API", "description": "Financial data connectivity", "category": "Finance", "link": "https://plaid.com/docs/api/", "auth": "apiKey"},
|
|
208
|
+
{"name": "Dwolla API", "description": "ACH payment platform API", "category": "Payments", "link": "https://developers.dwolla.com/docs", "auth": "apiKey"},
|
|
209
|
+
|
|
210
|
+
# Crypto & Web3
|
|
211
|
+
{"name": "Alchemy API", "description": "Web3 development platform", "category": "Blockchain", "link": "https://docs.alchemy.com/reference/api-overview", "auth": "apiKey"},
|
|
212
|
+
{"name": "Infura API", "description": "Ethereum node API", "category": "Blockchain", "link": "https://docs.infura.io/infura/", "auth": "apiKey"},
|
|
213
|
+
{"name": "Moralis API", "description": "Web3 data API", "category": "Blockchain", "link": "https://docs.moralis.io/web3-data-api/", "auth": "apiKey"},
|
|
214
|
+
{"name": "QuickNode API", "description": "Blockchain infrastructure API", "category": "Blockchain", "link": "https://www.quicknode.com/docs/welcome", "auth": "apiKey"},
|
|
215
|
+
{"name": "CoinGecko API", "description": "Cryptocurrency data API", "category": "Cryptocurrency", "link": "https://www.coingecko.com/en/api/documentation", "auth": "None"},
|
|
216
|
+
{"name": "CoinMarketCap API", "description": "Crypto market data API", "category": "Cryptocurrency", "link": "https://coinmarketcap.com/api/documentation/v1/", "auth": "apiKey"},
|
|
217
|
+
{"name": "Binance API", "description": "Cryptocurrency exchange API", "category": "Cryptocurrency", "link": "https://binance-docs.github.io/apidocs/", "auth": "apiKey"},
|
|
218
|
+
{"name": "Coinbase API", "description": "Cryptocurrency platform API", "category": "Cryptocurrency", "link": "https://docs.cdp.coinbase.com/", "auth": "apiKey"},
|
|
219
|
+
{"name": "Kraken API", "description": "Crypto exchange API", "category": "Cryptocurrency", "link": "https://docs.kraken.com/rest/", "auth": "apiKey"},
|
|
220
|
+
|
|
221
|
+
# Media & Content
|
|
222
|
+
{"name": "Cloudinary API", "description": "Media management platform", "category": "Media", "link": "https://cloudinary.com/documentation/image_transformations", "auth": "apiKey"},
|
|
223
|
+
{"name": "Imgix API", "description": "Real-time image processing", "category": "Media", "link": "https://docs.imgix.com/apis/rendering", "auth": "apiKey"},
|
|
224
|
+
{"name": "Mux API", "description": "Video infrastructure API", "category": "Media", "link": "https://docs.mux.com/api-reference", "auth": "apiKey"},
|
|
225
|
+
{"name": "Bunny.net API", "description": "CDN and storage API", "category": "Media", "link": "https://docs.bunny.net/reference/bunnynet-api-overview", "auth": "apiKey"},
|
|
226
|
+
{"name": "Uploadcare API", "description": "File handling API", "category": "Media", "link": "https://uploadcare.com/docs/start/", "auth": "apiKey"},
|
|
227
|
+
|
|
228
|
+
# Authentication
|
|
229
|
+
{"name": "Auth0 API", "description": "Identity platform API", "category": "Security", "link": "https://auth0.com/docs/api", "auth": "apiKey"},
|
|
230
|
+
{"name": "Clerk API", "description": "User authentication API", "category": "Security", "link": "https://clerk.com/docs/reference/backend-api", "auth": "apiKey"},
|
|
231
|
+
{"name": "Supabase Auth API", "description": "Authentication service API", "category": "Security", "link": "https://supabase.com/docs/reference/javascript/auth-api", "auth": "apiKey"},
|
|
232
|
+
{"name": "Firebase Auth API", "description": "Google authentication API", "category": "Security", "link": "https://firebase.google.com/docs/reference/rest/auth", "auth": "apiKey"},
|
|
233
|
+
{"name": "WorkOS API", "description": "Enterprise auth API", "category": "Security", "link": "https://workos.com/docs/reference", "auth": "apiKey"},
|
|
234
|
+
{"name": "Stytch API", "description": "Passwordless auth API", "category": "Security", "link": "https://stytch.com/docs/api", "auth": "apiKey"},
|
|
235
|
+
|
|
236
|
+
# Productivity
|
|
237
|
+
{"name": "Notion API", "description": "Workspace and notes API", "category": "Productivity", "link": "https://developers.notion.com/reference/intro", "auth": "apiKey"},
|
|
238
|
+
{"name": "Airtable API", "description": "Database/spreadsheet API", "category": "Productivity", "link": "https://airtable.com/developers/web/api/introduction", "auth": "apiKey"},
|
|
239
|
+
{"name": "Linear API", "description": "Issue tracking API", "category": "Productivity", "link": "https://developers.linear.app/docs/graphql/working-with-the-graphql-api", "auth": "apiKey"},
|
|
240
|
+
{"name": "Todoist API", "description": "Task management API", "category": "Productivity", "link": "https://developer.todoist.com/rest/v2/", "auth": "apiKey"},
|
|
241
|
+
{"name": "ClickUp API", "description": "Project management API", "category": "Productivity", "link": "https://clickup.com/api", "auth": "apiKey"},
|
|
242
|
+
{"name": "Monday.com API", "description": "Work management platform API", "category": "Productivity", "link": "https://developer.monday.com/api-reference/docs", "auth": "apiKey"},
|
|
243
|
+
{"name": "Asana API", "description": "Project management API", "category": "Productivity", "link": "https://developers.asana.com/docs/asana", "auth": "apiKey"},
|
|
244
|
+
|
|
245
|
+
# Social & Content Platforms
|
|
246
|
+
{"name": "Discord API", "description": "Chat platform API", "category": "Social Media", "link": "https://discord.com/developers/docs/intro", "auth": "apiKey"},
|
|
247
|
+
{"name": "Slack API", "description": "Workspace messaging API", "category": "Social Media", "link": "https://api.slack.com/", "auth": "OAuth"},
|
|
248
|
+
{"name": "Twitter/X API", "description": "Social media platform API", "category": "Social Media", "link": "https://developer.twitter.com/en/docs", "auth": "OAuth"},
|
|
249
|
+
{"name": "Meta Graph API", "description": "Facebook/Instagram API", "category": "Social Media", "link": "https://developers.facebook.com/docs/graph-api/", "auth": "OAuth"},
|
|
250
|
+
{"name": "TikTok API", "description": "Short video platform API", "category": "Social Media", "link": "https://developers.tiktok.com/doc/overview", "auth": "OAuth"},
|
|
251
|
+
{"name": "Reddit API", "description": "Social news platform API", "category": "Social Media", "link": "https://www.reddit.com/dev/api/", "auth": "OAuth"},
|
|
252
|
+
{"name": "Mastodon API", "description": "Decentralized social API", "category": "Social Media", "link": "https://docs.joinmastodon.org/api/", "auth": "OAuth"},
|
|
253
|
+
{"name": "Bluesky API", "description": "Decentralized social protocol", "category": "Social Media", "link": "https://docs.bsky.app/docs/api/", "auth": "apiKey"},
|
|
254
|
+
|
|
255
|
+
# Geographic & Location
|
|
256
|
+
{"name": "Mapbox API", "description": "Maps and location services", "category": "Geocoding", "link": "https://docs.mapbox.com/api/overview/", "auth": "apiKey"},
|
|
257
|
+
{"name": "HERE API", "description": "Location platform services", "category": "Geocoding", "link": "https://developer.here.com/documentation", "auth": "apiKey"},
|
|
258
|
+
{"name": "Geocod.io API", "description": "US/Canada geocoding API", "category": "Geocoding", "link": "https://www.geocod.io/docs/", "auth": "apiKey"},
|
|
259
|
+
{"name": "OpenCage API", "description": "Forward/reverse geocoding", "category": "Geocoding", "link": "https://opencagedata.com/api", "auth": "apiKey"},
|
|
260
|
+
{"name": "IPinfo API", "description": "IP geolocation API", "category": "Geocoding", "link": "https://ipinfo.io/developers", "auth": "apiKey"},
|
|
261
|
+
{"name": "MaxMind GeoIP API", "description": "IP intelligence API", "category": "Geocoding", "link": "https://dev.maxmind.com/geoip/", "auth": "apiKey"},
|
|
262
|
+
|
|
263
|
+
# Health & Fitness
|
|
264
|
+
{"name": "Apple HealthKit API", "description": "Health data API for iOS", "category": "Health", "link": "https://developer.apple.com/documentation/healthkit", "auth": "OAuth"},
|
|
265
|
+
{"name": "Google Fit API", "description": "Fitness tracking API", "category": "Health", "link": "https://developers.google.com/fit/rest/", "auth": "OAuth"},
|
|
266
|
+
{"name": "Withings API", "description": "Health device data API", "category": "Health", "link": "https://developer.withings.com/api-reference", "auth": "OAuth"},
|
|
267
|
+
{"name": "Peloton API", "description": "Connected fitness API", "category": "Health", "link": "https://github.com/philosowaffle/peloton-to-garmin", "auth": "apiKey"},
|
|
268
|
+
|
|
269
|
+
# Food & Recipes
|
|
270
|
+
{"name": "Edamam API", "description": "Nutrition and recipe API", "category": "Food & Drink", "link": "https://developer.edamam.com/", "auth": "apiKey"},
|
|
271
|
+
{"name": "Spoonacular API", "description": "Food and recipe data API", "category": "Food & Drink", "link": "https://spoonacular.com/food-api/docs", "auth": "apiKey"},
|
|
272
|
+
{"name": "Yummly API", "description": "Recipe search API", "category": "Food & Drink", "link": "https://developer.yummly.com/", "auth": "apiKey"},
|
|
273
|
+
|
|
274
|
+
# News & Media
|
|
275
|
+
{"name": "NewsAPI", "description": "News aggregation API", "category": "News", "link": "https://newsapi.org/docs", "auth": "apiKey"},
|
|
276
|
+
{"name": "Guardian API", "description": "The Guardian news API", "category": "News", "link": "https://open-platform.theguardian.com/documentation/", "auth": "apiKey"},
|
|
277
|
+
{"name": "NY Times API", "description": "New York Times content", "category": "News", "link": "https://developer.nytimes.com/apis", "auth": "apiKey"},
|
|
278
|
+
{"name": "GNews API", "description": "Google News aggregator", "category": "News", "link": "https://gnews.io/docs/v4", "auth": "apiKey"},
|
|
279
|
+
{"name": "Currents API", "description": "World news API", "category": "News", "link": "https://currentsapi.services/en/docs/", "auth": "apiKey"},
|
|
280
|
+
|
|
281
|
+
# More AI/ML Services
|
|
282
|
+
{"name": "Whisper API", "description": "OpenAI speech recognition", "category": "Machine Learning", "link": "https://platform.openai.com/docs/guides/speech-to-text", "auth": "apiKey"},
|
|
283
|
+
{"name": "DALL-E API", "description": "OpenAI image generation", "category": "Machine Learning", "link": "https://platform.openai.com/docs/guides/images", "auth": "apiKey"},
|
|
284
|
+
{"name": "Midjourney API", "description": "AI image generation", "category": "Machine Learning", "link": "https://docs.midjourney.com/", "auth": "apiKey"},
|
|
285
|
+
{"name": "RunPod API", "description": "GPU cloud for AI", "category": "Machine Learning", "link": "https://docs.runpod.io/reference/overview", "auth": "apiKey"},
|
|
286
|
+
{"name": "Modal API", "description": "Serverless GPU/ML platform", "category": "Machine Learning", "link": "https://modal.com/docs/reference", "auth": "apiKey"},
|
|
287
|
+
{"name": "Together AI API", "description": "Open-source LLM hosting", "category": "Machine Learning", "link": "https://docs.together.ai/reference/inference", "auth": "apiKey"},
|
|
288
|
+
{"name": "Groq API", "description": "Fast LLM inference API", "category": "Machine Learning", "link": "https://console.groq.com/docs/quickstart", "auth": "apiKey"},
|
|
289
|
+
{"name": "Mistral API", "description": "Open-weight LLM API", "category": "Machine Learning", "link": "https://docs.mistral.ai/api/", "auth": "apiKey"},
|
|
290
|
+
|
|
291
|
+
# Government & Public Data
|
|
292
|
+
{"name": "Data.gov API", "description": "US Government open data", "category": "Government", "link": "https://api.data.gov/docs/", "auth": "apiKey"},
|
|
293
|
+
{"name": "UK Parliament API", "description": "UK legislative data", "category": "Government", "link": "https://developer.parliament.uk/", "auth": "None"},
|
|
294
|
+
{"name": "OpenFDA API", "description": "FDA public data API", "category": "Health", "link": "https://open.fda.gov/apis/", "auth": "None"},
|
|
295
|
+
{"name": "SEC EDGAR API", "description": "US financial filings", "category": "Finance", "link": "https://www.sec.gov/search-filings/edgar-application-programming-interfaces", "auth": "None"},
|
|
296
|
+
{"name": "FCC API", "description": "Federal Communications data", "category": "Government", "link": "https://www.fcc.gov/developers", "auth": "None"},
|
|
297
|
+
{"name": "Census Bureau API", "description": "US demographic data", "category": "Government", "link": "https://www.census.gov/data/developers/data-sets.html", "auth": "apiKey"},
|
|
298
|
+
|
|
299
|
+
# Finance & Trading
|
|
300
|
+
{"name": "Alpha Vantage API", "description": "Stock market data API", "category": "Finance", "link": "https://www.alphavantage.co/documentation/", "auth": "apiKey"},
|
|
301
|
+
{"name": "Polygon.io API", "description": "Financial market data", "category": "Finance", "link": "https://polygon.io/docs/", "auth": "apiKey"},
|
|
302
|
+
{"name": "IEX Cloud API", "description": "Financial data platform", "category": "Finance", "link": "https://iexcloud.io/docs/", "auth": "apiKey"},
|
|
303
|
+
{"name": "Yahoo Finance API", "description": "Stock quotes and data", "category": "Finance", "link": "https://www.yahoofinanceapi.com/", "auth": "apiKey"},
|
|
304
|
+
{"name": "Finnhub API", "description": "Real-time stock API", "category": "Finance", "link": "https://finnhub.io/docs/api", "auth": "apiKey"},
|
|
305
|
+
{"name": "Twelve Data API", "description": "Financial data API", "category": "Finance", "link": "https://twelvedata.com/docs", "auth": "apiKey"},
|
|
306
|
+
{"name": "Tradier API", "description": "Brokerage trading API", "category": "Finance", "link": "https://documentation.tradier.com/", "auth": "apiKey"},
|
|
307
|
+
{"name": "Interactive Brokers API", "description": "Trading platform API", "category": "Finance", "link": "https://interactivebrokers.github.io/cpwebapi/", "auth": "apiKey"},
|
|
308
|
+
|
|
309
|
+
# More Services
|
|
310
|
+
{"name": "Calendly API", "description": "Scheduling automation API", "category": "Productivity", "link": "https://developer.calendly.com/api-docs/", "auth": "apiKey"},
|
|
311
|
+
{"name": "Cal.com API", "description": "Open-source scheduling API", "category": "Productivity", "link": "https://cal.com/docs/enterprise-features/api", "auth": "apiKey"},
|
|
312
|
+
{"name": "Typeform API", "description": "Form builder API", "category": "Productivity", "link": "https://developer.typeform.com/", "auth": "apiKey"},
|
|
313
|
+
{"name": "Tally API", "description": "Form creation API", "category": "Productivity", "link": "https://tally.so/help/webhooks", "auth": "apiKey"},
|
|
314
|
+
{"name": "Jotform API", "description": "Online forms API", "category": "Productivity", "link": "https://api.jotform.com/docs/", "auth": "apiKey"},
|
|
315
|
+
{"name": "DocuSign API", "description": "E-signature platform API", "category": "Business", "link": "https://developers.docusign.com/docs/esign-rest-api/", "auth": "OAuth"},
|
|
316
|
+
{"name": "PandaDoc API", "description": "Document automation API", "category": "Business", "link": "https://developers.pandadoc.com/reference/about-pandadoc-api", "auth": "apiKey"},
|
|
317
|
+
{"name": "HelloSign API", "description": "E-signature API (Dropbox)", "category": "Business", "link": "https://developers.hellosign.com/", "auth": "apiKey"},
|
|
318
|
+
{"name": "Loom API", "description": "Video messaging API", "category": "Media", "link": "https://dev.loom.com/docs/", "auth": "apiKey"},
|
|
319
|
+
{"name": "Descript API", "description": "Audio/video editing API", "category": "Media", "link": "https://api.descript.com/", "auth": "apiKey"},
|
|
320
|
+
|
|
321
|
+
# Gaming & Entertainment
|
|
322
|
+
{"name": "RAWG API", "description": "Video game database API", "category": "Games", "link": "https://rawg.io/apidocs", "auth": "apiKey"},
|
|
323
|
+
{"name": "IGDB API", "description": "Internet Game Database API", "category": "Games", "link": "https://api-docs.igdb.com/", "auth": "apiKey"},
|
|
324
|
+
{"name": "Giant Bomb API", "description": "Video game wiki API", "category": "Games", "link": "https://www.giantbomb.com/api/", "auth": "apiKey"},
|
|
325
|
+
{"name": "Chess.com API", "description": "Chess platform API", "category": "Games", "link": "https://www.chess.com/news/view/published-data-api", "auth": "None"},
|
|
326
|
+
{"name": "Lichess API", "description": "Open-source chess API", "category": "Games", "link": "https://lichess.org/api", "auth": "apiKey"},
|
|
327
|
+
{"name": "Pokemon TCG API", "description": "Pokemon card game data", "category": "Games", "link": "https://pokemontcg.io/", "auth": "None"},
|
|
328
|
+
{"name": "Magic: The Gathering API", "description": "MTG card database", "category": "Games", "link": "https://docs.magicthegathering.io/", "auth": "None"},
|
|
329
|
+
|
|
330
|
+
# Email Services
|
|
331
|
+
{"name": "Resend API", "description": "Email for developers", "category": "Email", "link": "https://resend.com/docs/api-reference/introduction", "auth": "apiKey"},
|
|
332
|
+
{"name": "Postmark API", "description": "Transactional email API", "category": "Email", "link": "https://postmarkapp.com/developer", "auth": "apiKey"},
|
|
333
|
+
{"name": "Mailgun API", "description": "Email delivery API", "category": "Email", "link": "https://documentation.mailgun.com/en/latest/api_reference.html", "auth": "apiKey"},
|
|
334
|
+
{"name": "Amazon SES API", "description": "AWS email service", "category": "Email", "link": "https://docs.aws.amazon.com/ses/latest/APIReference/Welcome.html", "auth": "apiKey"},
|
|
335
|
+
{"name": "SparkPost API", "description": "Email delivery platform", "category": "Email", "link": "https://developers.sparkpost.com/api/", "auth": "apiKey"},
|
|
336
|
+
{"name": "Loops API", "description": "Email for SaaS", "category": "Email", "link": "https://loops.so/docs/api-reference/overview", "auth": "apiKey"},
|
|
337
|
+
|
|
338
|
+
# Testing & QA
|
|
339
|
+
{"name": "BrowserStack API", "description": "Cross-browser testing API", "category": "Development", "link": "https://www.browserstack.com/docs/automate/api-reference/selenium/introduction", "auth": "apiKey"},
|
|
340
|
+
{"name": "Sauce Labs API", "description": "Testing platform API", "category": "Development", "link": "https://docs.saucelabs.com/dev/api/", "auth": "apiKey"},
|
|
341
|
+
{"name": "LambdaTest API", "description": "Browser testing API", "category": "Development", "link": "https://www.lambdatest.com/support/api-doc/", "auth": "apiKey"},
|
|
342
|
+
{"name": "Checkly API", "description": "Monitoring and testing API", "category": "Development", "link": "https://www.checklyhq.com/docs/cli/", "auth": "apiKey"},
|
|
343
|
+
|
|
344
|
+
# Search
|
|
345
|
+
{"name": "Algolia API", "description": "Search-as-a-service API", "category": "Search", "link": "https://www.algolia.com/doc/api-reference/api-methods/", "auth": "apiKey"},
|
|
346
|
+
{"name": "Elasticsearch API", "description": "Search engine API", "category": "Search", "link": "https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html", "auth": "apiKey"},
|
|
347
|
+
{"name": "Typesense API", "description": "Open-source search API", "category": "Search", "link": "https://typesense.org/docs/0.25.1/api/", "auth": "apiKey"},
|
|
348
|
+
{"name": "Meilisearch API", "description": "Open-source search engine", "category": "Search", "link": "https://www.meilisearch.com/docs/reference/api/overview", "auth": "apiKey"},
|
|
349
|
+
{"name": "Pinecone API", "description": "Vector database API", "category": "Search", "link": "https://docs.pinecone.io/reference/api/introduction", "auth": "apiKey"},
|
|
350
|
+
{"name": "Weaviate API", "description": "Vector search engine", "category": "Search", "link": "https://weaviate.io/developers/weaviate/api", "auth": "apiKey"},
|
|
351
|
+
{"name": "Qdrant API", "description": "Vector similarity search", "category": "Search", "link": "https://qdrant.tech/documentation/", "auth": "apiKey"},
|
|
352
|
+
|
|
353
|
+
# Swedish/Nordic APIs
|
|
354
|
+
{"name": "Swish API", "description": "Swedish mobile payments", "category": "Payments", "link": "https://developer.swish.nu/", "auth": "apiKey"},
|
|
355
|
+
{"name": "BankID API", "description": "Swedish electronic ID", "category": "Security", "link": "https://www.bankid.com/utvecklare/rp-info", "auth": "apiKey"},
|
|
356
|
+
{"name": "Klarna API", "description": "Buy now pay later API", "category": "Payments", "link": "https://docs.klarna.com/", "auth": "apiKey"},
|
|
357
|
+
{"name": "Trafiklab API", "description": "Swedish transit data", "category": "Transportation", "link": "https://www.trafiklab.se/api", "auth": "apiKey"},
|
|
358
|
+
{"name": "SMHI API", "description": "Swedish weather data", "category": "Weather", "link": "https://opendata.smhi.se/apidocs/", "auth": "None"},
|
|
359
|
+
{"name": "SCB API", "description": "Swedish statistics", "category": "Government", "link": "https://www.scb.se/vara-tjanster/oppna-data/api-for-statistikdatabasen/", "auth": "None"},
|
|
360
|
+
{"name": "Postnord API", "description": "Nordic postal services", "category": "Transportation", "link": "https://developer.postnord.com/", "auth": "apiKey"},
|
|
361
|
+
{"name": "Vipps API", "description": "Norwegian mobile payments", "category": "Payments", "link": "https://developer.vippsmobilepay.com/", "auth": "apiKey"},
|
|
362
|
+
]
|
|
363
|
+
|
|
364
|
+
formatted = []
|
|
365
|
+
for api in apis:
|
|
366
|
+
formatted.append({
|
|
367
|
+
"id": generate_id(api["name"]),
|
|
368
|
+
"name": api["name"],
|
|
369
|
+
"description": api["description"],
|
|
370
|
+
"category": api.get("category", "API Services"),
|
|
371
|
+
"auth": api.get("auth", "apiKey"),
|
|
372
|
+
"https": True,
|
|
373
|
+
"cors": "unknown",
|
|
374
|
+
"link": api["link"],
|
|
375
|
+
"pricing": "unknown",
|
|
376
|
+
"keywords": [],
|
|
377
|
+
"source": "curated"
|
|
378
|
+
})
|
|
379
|
+
|
|
380
|
+
return formatted
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
def main():
|
|
384
|
+
print(f"š¦ APIClaw Night Expansion - {datetime.now().strftime('%Y-%m-%d %H:%M')}")
|
|
385
|
+
print("=" * 60)
|
|
386
|
+
|
|
387
|
+
# Load existing registry
|
|
388
|
+
registry = load_registry()
|
|
389
|
+
existing_ids = get_existing_ids(registry)
|
|
390
|
+
initial_count = len(registry['apis'])
|
|
391
|
+
print(f"š Current registry: {initial_count} APIs")
|
|
392
|
+
|
|
393
|
+
added_count = 0
|
|
394
|
+
|
|
395
|
+
# 1. Fetch from apis.guru
|
|
396
|
+
print("\nš„ Fetching from apis.guru...")
|
|
397
|
+
apis_guru_data = fetch_json("https://api.apis.guru/v2/list.json")
|
|
398
|
+
if apis_guru_data:
|
|
399
|
+
apis_guru_apis = parse_apis_guru(apis_guru_data)
|
|
400
|
+
print(f" Found {len(apis_guru_apis)} APIs from apis.guru")
|
|
401
|
+
|
|
402
|
+
for api in apis_guru_apis:
|
|
403
|
+
if api['id'] not in existing_ids:
|
|
404
|
+
registry['apis'].append(api)
|
|
405
|
+
existing_ids.add(api['id'])
|
|
406
|
+
added_count += 1
|
|
407
|
+
|
|
408
|
+
print(f" Added {added_count} new APIs from apis.guru")
|
|
409
|
+
|
|
410
|
+
# 2. Add curated APIs
|
|
411
|
+
print("\nš„ Adding curated APIs from Awesome APIs lists...")
|
|
412
|
+
curated_apis = add_awesome_apis_batch()
|
|
413
|
+
curated_added = 0
|
|
414
|
+
for api in curated_apis:
|
|
415
|
+
if api['id'] not in existing_ids:
|
|
416
|
+
registry['apis'].append(api)
|
|
417
|
+
existing_ids.add(api['id'])
|
|
418
|
+
curated_added += 1
|
|
419
|
+
|
|
420
|
+
added_count += curated_added
|
|
421
|
+
print(f" Added {curated_added} new curated APIs")
|
|
422
|
+
|
|
423
|
+
# Update registry metadata
|
|
424
|
+
registry['count'] = len(registry['apis'])
|
|
425
|
+
registry['lastUpdated'] = datetime.now().strftime('%Y-%m-%d')
|
|
426
|
+
|
|
427
|
+
# Save
|
|
428
|
+
save_registry(registry)
|
|
429
|
+
|
|
430
|
+
print("\n" + "=" * 60)
|
|
431
|
+
print(f"ā
Expansion complete!")
|
|
432
|
+
print(f" Before: {initial_count}")
|
|
433
|
+
print(f" Added: {added_count}")
|
|
434
|
+
print(f" Total: {registry['count']}")
|
|
435
|
+
|
|
436
|
+
return added_count
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
if __name__ == "__main__":
|
|
440
|
+
added = main()
|
|
441
|
+
print(f"\nšÆ Result: +{added} APIs added this run")
|