@nordsym/apiclaw 1.0.0 → 1.1.0
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/AGENTS.md +74 -0
- package/HEARTBEAT.md +4 -0
- package/IDENTITY.md +22 -0
- package/README.md +197 -202
- package/SOUL.md +36 -0
- package/STATUS.md +237 -0
- package/TOOLS.md +36 -0
- package/USER.md +17 -0
- package/{backend/convex → convex}/_generated/api.d.ts +6 -6
- package/convex/credits.ts +211 -0
- package/convex/http.ts +490 -0
- package/convex/providers.ts +516 -0
- package/convex/purchases.ts +183 -0
- package/convex/schema.ts +180 -0
- package/convex.json +3 -0
- package/dist/credentials.d.ts +19 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +158 -0
- package/dist/credentials.js.map +1 -0
- package/dist/credits.d.ts +14 -11
- package/dist/credits.d.ts.map +1 -1
- package/dist/credits.js +151 -99
- package/dist/credits.js.map +1 -1
- package/dist/discovery.d.ts +7 -16
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +33 -40
- package/dist/discovery.js.map +1 -1
- package/dist/execute.d.ts +19 -0
- package/dist/execute.d.ts.map +1 -0
- package/dist/execute.js +285 -0
- package/dist/execute.js.map +1 -0
- package/dist/index.js +106 -30
- package/dist/index.js.map +1 -1
- package/dist/proxy.d.ts +6 -0
- package/dist/proxy.d.ts.map +1 -0
- package/dist/proxy.js +19 -0
- package/dist/proxy.js.map +1 -0
- package/dist/registry/apis.json +95362 -202
- package/dist/registry/apis_expanded.json +100853 -0
- package/dist/stripe.d.ts +68 -0
- package/dist/stripe.d.ts.map +1 -0
- package/dist/stripe.js +196 -0
- package/dist/stripe.js.map +1 -0
- package/dist/test.d.ts +3 -2
- package/dist/test.d.ts.map +1 -1
- package/dist/test.js +105 -75
- package/dist/test.js.map +1 -1
- package/dist/types.d.ts +0 -28
- package/dist/types.d.ts.map +1 -1
- package/dist/webhook.d.ts +2 -0
- package/dist/webhook.d.ts.map +1 -0
- package/dist/webhook.js +90 -0
- package/dist/webhook.js.map +1 -0
- package/landing/DESIGN.md +343 -0
- package/landing/package-lock.json +1190 -40
- package/landing/package.json +5 -2
- package/landing/public/android-chrome-192x192.png +0 -0
- package/landing/public/android-chrome-512x512.png +0 -0
- package/landing/public/apple-touch-icon.png +0 -0
- package/landing/public/demo.gif +0 -0
- package/landing/public/demo.mp4 +0 -0
- package/landing/public/favicon-16x16.png +0 -0
- package/landing/public/favicon-32x32.png +0 -0
- package/landing/public/favicon.ico +0 -0
- package/landing/public/favicon.svg +3 -0
- package/landing/public/icon.svg +47 -0
- package/landing/public/logo-mono.svg +37 -0
- package/landing/public/logo-simple.svg +45 -0
- package/landing/public/logo.svg +84 -0
- package/landing/public/og-image.png +0 -0
- package/landing/public/og-template.html +184 -0
- package/landing/public/site.webmanifest +31 -0
- package/landing/scripts/generate-assets.js +284 -0
- package/landing/scripts/generate-pngs.js +48 -0
- package/landing/scripts/generate-stats.js +42 -0
- package/landing/src/app/admin/page.tsx +348 -0
- package/landing/src/app/api/auth/magic-link/route.ts +73 -0
- package/landing/src/app/api/auth/session/route.ts +38 -0
- package/landing/src/app/api/auth/verify/route.ts +43 -0
- package/landing/src/app/api/og/route.tsx +74 -0
- package/landing/src/app/globals.css +439 -100
- package/landing/src/app/layout.tsx +37 -9
- package/landing/src/app/page.tsx +640 -552
- package/landing/src/app/providers/dashboard/login/page.tsx +176 -0
- package/landing/src/app/providers/dashboard/page.tsx +589 -0
- package/landing/src/app/providers/dashboard/verify/page.tsx +106 -0
- package/landing/src/app/providers/layout.tsx +14 -0
- package/landing/src/app/providers/page.tsx +402 -0
- package/landing/src/app/providers/register/page.tsx +670 -0
- package/landing/src/components/ProviderDashboard.tsx +794 -0
- package/landing/src/hooks/useDashboardData.ts +99 -0
- package/landing/src/lib/apis.json +116054 -0
- package/landing/src/lib/convex-client.ts +106 -0
- package/landing/src/lib/mock-data.ts +285 -0
- package/landing/src/lib/stats.json +6 -0
- package/landing/tailwind.config.ts +12 -11
- package/landing/tsconfig.tsbuildinfo +1 -0
- package/package.json +21 -20
- package/scripts/SYMBOT-FIX.md +238 -0
- package/scripts/demo-simulation.py +177 -0
- package/scripts/expand-more.py +502 -0
- package/scripts/expand-registry.py +434 -0
- package/scripts/history-sanitizer.ts +272 -0
- package/scripts/mass-scrape.py +1308 -0
- package/scripts/sync-and-deploy.sh +36 -0
- package/src/credentials.ts +177 -0
- package/src/credits.ts +190 -122
- package/src/discovery.ts +45 -58
- package/src/execute.ts +350 -0
- package/src/index.ts +113 -31
- package/src/proxy.ts +24 -0
- package/src/registry/apis.json +95362 -202
- package/src/registry/apis_expanded.json +100853 -0
- package/src/stripe.ts +243 -0
- package/src/test.ts +127 -89
- package/src/types.ts +0 -34
- package/src/webhook.ts +107 -0
- package/.github/ISSUE_TEMPLATE/add-api.yml +0 -123
- package/BRIEFING.md +0 -30
- package/backend/convex/apiKeys.ts +0 -75
- package/backend/convex/purchases.ts +0 -74
- package/backend/convex/schema.ts +0 -45
- package/backend/convex/transactions.ts +0 -57
- package/backend/convex/users.ts +0 -94
- package/backend/package-lock.json +0 -521
- package/backend/package.json +0 -15
- package/dist/registry/parse_apis.py +0 -146
- package/dist/revenuecat.d.ts +0 -61
- package/dist/revenuecat.d.ts.map +0 -1
- package/dist/revenuecat.js +0 -166
- package/dist/revenuecat.js.map +0 -1
- package/dist/webhooks/revenuecat.d.ts +0 -48
- package/dist/webhooks/revenuecat.d.ts.map +0 -1
- package/dist/webhooks/revenuecat.js +0 -119
- package/dist/webhooks/revenuecat.js.map +0 -1
- package/docs/revenuecat-setup.md +0 -89
- package/landing/src/app/api/keys/route.ts +0 -71
- package/landing/src/app/api/log/route.ts +0 -37
- package/landing/src/app/api/stats/route.ts +0 -37
- package/landing/src/app/page.tsx.bak +0 -567
- package/landing/src/components/AddKeyModal.tsx +0 -159
- package/newsletter-template.html +0 -71
- package/outreach/OUTREACH-SYSTEM.md +0 -211
- package/outreach/email-template.html +0 -179
- package/outreach/targets.md +0 -133
- package/src/registry/parse_apis.py +0 -146
- package/src/revenuecat.ts +0 -239
- package/src/webhooks/revenuecat.ts +0 -187
- /package/{backend/convex → convex}/README.md +0 -0
- /package/{backend/convex → convex}/_generated/api.js +0 -0
- /package/{backend/convex → convex}/_generated/dataModel.d.ts +0 -0
- /package/{backend/convex → convex}/_generated/server.d.ts +0 -0
- /package/{backend/convex → convex}/_generated/server.js +0 -0
- /package/{backend/convex → convex}/tsconfig.json +0 -0
|
@@ -0,0 +1,434 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
APIClaw Registry Expansion Script
|
|
4
|
+
Aggregates APIs from multiple sources and deduplicates them.
|
|
5
|
+
Target: 5,000+ APIs
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import json
|
|
9
|
+
import re
|
|
10
|
+
import hashlib
|
|
11
|
+
from datetime import datetime
|
|
12
|
+
from pathlib import Path
|
|
13
|
+
import urllib.request
|
|
14
|
+
import ssl
|
|
15
|
+
|
|
16
|
+
# Category mapping for standardization
|
|
17
|
+
CATEGORY_MAP = {
|
|
18
|
+
'cloud': 'Cloud',
|
|
19
|
+
'payment': 'Finance',
|
|
20
|
+
'financial': 'Finance',
|
|
21
|
+
'finance': 'Finance',
|
|
22
|
+
'social': 'Social',
|
|
23
|
+
'weather': 'Weather',
|
|
24
|
+
'geocoding': 'Geocoding',
|
|
25
|
+
'location': 'Geocoding',
|
|
26
|
+
'machine_learning': 'Machine Learning',
|
|
27
|
+
'ai': 'Machine Learning',
|
|
28
|
+
'iot': 'IoT',
|
|
29
|
+
'security': 'Security',
|
|
30
|
+
'analytics': 'Analytics',
|
|
31
|
+
'ecommerce': 'Shopping',
|
|
32
|
+
'email': 'Email',
|
|
33
|
+
'entertainment': 'Entertainment',
|
|
34
|
+
'music': 'Music',
|
|
35
|
+
'video': 'Video',
|
|
36
|
+
'games': 'Games',
|
|
37
|
+
'news': 'News',
|
|
38
|
+
'sports': 'Sports',
|
|
39
|
+
'health': 'Health',
|
|
40
|
+
'food': 'Food & Drink',
|
|
41
|
+
'travel': 'Transportation',
|
|
42
|
+
'transport': 'Transportation',
|
|
43
|
+
'government': 'Government',
|
|
44
|
+
'developer_tools': 'Development',
|
|
45
|
+
'development': 'Development',
|
|
46
|
+
'open_data': 'Open Data',
|
|
47
|
+
'text': 'Text Analysis',
|
|
48
|
+
'messaging': 'Communication',
|
|
49
|
+
'media': 'Media',
|
|
50
|
+
'documents': 'Documents',
|
|
51
|
+
'storage': 'Storage',
|
|
52
|
+
'database': 'Database',
|
|
53
|
+
'search': 'Search',
|
|
54
|
+
'marketing': 'Marketing',
|
|
55
|
+
'crm': 'Business',
|
|
56
|
+
'business': 'Business',
|
|
57
|
+
'education': 'Education',
|
|
58
|
+
'jobs': 'Jobs',
|
|
59
|
+
'real_estate': 'Real Estate',
|
|
60
|
+
'cryptocurrency': 'Cryptocurrency',
|
|
61
|
+
'blockchain': 'Blockchain',
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
def generate_id(name: str) -> str:
|
|
65
|
+
"""Generate a unique ID from API name."""
|
|
66
|
+
clean = re.sub(r'[^a-z0-9]+', '-', name.lower()).strip('-')
|
|
67
|
+
return clean[:50]
|
|
68
|
+
|
|
69
|
+
def normalize_category(cat: str) -> str:
|
|
70
|
+
"""Normalize category name."""
|
|
71
|
+
if not cat:
|
|
72
|
+
return 'Uncategorized'
|
|
73
|
+
cat_lower = cat.lower().replace(' ', '_').replace('-', '_')
|
|
74
|
+
return CATEGORY_MAP.get(cat_lower, cat.title())
|
|
75
|
+
|
|
76
|
+
def fetch_json(url: str) -> dict:
|
|
77
|
+
"""Fetch JSON from URL."""
|
|
78
|
+
ctx = ssl.create_default_context()
|
|
79
|
+
ctx.check_hostname = False
|
|
80
|
+
ctx.verify_mode = ssl.CERT_NONE
|
|
81
|
+
try:
|
|
82
|
+
req = urllib.request.Request(url, headers={'User-Agent': 'APIClaw/1.0'})
|
|
83
|
+
with urllib.request.urlopen(req, timeout=30, context=ctx) as response:
|
|
84
|
+
return json.loads(response.read().decode('utf-8'))
|
|
85
|
+
except Exception as e:
|
|
86
|
+
print(f" Error fetching {url}: {e}")
|
|
87
|
+
return {}
|
|
88
|
+
|
|
89
|
+
def load_existing_apis(path: str) -> dict:
|
|
90
|
+
"""Load existing APIs from file."""
|
|
91
|
+
with open(path, 'r') as f:
|
|
92
|
+
data = json.load(f)
|
|
93
|
+
# Create lookup by normalized name/link
|
|
94
|
+
existing = {}
|
|
95
|
+
for api in data.get('apis', []):
|
|
96
|
+
key = api.get('link', '').lower().rstrip('/')
|
|
97
|
+
if key:
|
|
98
|
+
existing[key] = api
|
|
99
|
+
name_key = api.get('name', '').lower()
|
|
100
|
+
if name_key:
|
|
101
|
+
existing[f"name:{name_key}"] = api
|
|
102
|
+
return existing, data
|
|
103
|
+
|
|
104
|
+
def parse_apis_guru(data: dict) -> list:
|
|
105
|
+
"""Parse APIs from apis.guru format."""
|
|
106
|
+
apis = []
|
|
107
|
+
for provider, info in data.items():
|
|
108
|
+
if not isinstance(info, dict):
|
|
109
|
+
continue
|
|
110
|
+
preferred = info.get('preferred', '')
|
|
111
|
+
versions = info.get('versions', {})
|
|
112
|
+
if not versions:
|
|
113
|
+
continue
|
|
114
|
+
|
|
115
|
+
# Get preferred version or latest
|
|
116
|
+
version_info = versions.get(preferred) or list(versions.values())[0]
|
|
117
|
+
api_info = version_info.get('info', {})
|
|
118
|
+
|
|
119
|
+
name = api_info.get('title', provider)
|
|
120
|
+
description = api_info.get('description', '')[:500]
|
|
121
|
+
|
|
122
|
+
# Clean description
|
|
123
|
+
description = re.sub(r'<[^>]+>', '', description)
|
|
124
|
+
description = re.sub(r'\s+', ' ', description).strip()
|
|
125
|
+
|
|
126
|
+
categories = api_info.get('x-apisguru-categories', [])
|
|
127
|
+
category = normalize_category(categories[0] if categories else 'Uncategorized')
|
|
128
|
+
|
|
129
|
+
# Get link
|
|
130
|
+
link = ''
|
|
131
|
+
origins = api_info.get('x-origin', [])
|
|
132
|
+
if origins and isinstance(origins, list):
|
|
133
|
+
link = origins[0].get('url', '')
|
|
134
|
+
|
|
135
|
+
ext_docs = version_info.get('externalDocs', {})
|
|
136
|
+
if not link and ext_docs:
|
|
137
|
+
link = ext_docs.get('url', '')
|
|
138
|
+
|
|
139
|
+
if not link:
|
|
140
|
+
link = f"https://api.apis.guru/v2/specs/{provider}"
|
|
141
|
+
|
|
142
|
+
apis.append({
|
|
143
|
+
'name': name,
|
|
144
|
+
'description': description[:300] if description else f"API for {name}",
|
|
145
|
+
'category': category,
|
|
146
|
+
'auth': 'apiKey', # Most APIs require auth
|
|
147
|
+
'https': True,
|
|
148
|
+
'cors': 'unknown',
|
|
149
|
+
'link': link,
|
|
150
|
+
'pricing': 'unknown',
|
|
151
|
+
'keywords': [provider.split('.')[0], category.lower()]
|
|
152
|
+
})
|
|
153
|
+
|
|
154
|
+
return apis
|
|
155
|
+
|
|
156
|
+
def get_public_apis_github() -> list:
|
|
157
|
+
"""Fetch from public-apis GitHub (different format)."""
|
|
158
|
+
print("Fetching from public-apis entries.json...")
|
|
159
|
+
url = "https://raw.githubusercontent.com/public-apis/public-apis/master/scripts/tests/entries.json"
|
|
160
|
+
data = fetch_json(url)
|
|
161
|
+
|
|
162
|
+
apis = []
|
|
163
|
+
if isinstance(data, list):
|
|
164
|
+
for entry in data:
|
|
165
|
+
apis.append({
|
|
166
|
+
'name': entry.get('API', entry.get('name', '')),
|
|
167
|
+
'description': entry.get('Description', entry.get('description', '')),
|
|
168
|
+
'category': normalize_category(entry.get('Category', 'Uncategorized')),
|
|
169
|
+
'auth': entry.get('Auth', 'None') or 'None',
|
|
170
|
+
'https': entry.get('HTTPS', True),
|
|
171
|
+
'cors': entry.get('Cors', 'unknown'),
|
|
172
|
+
'link': entry.get('Link', ''),
|
|
173
|
+
'pricing': 'free' if not entry.get('Auth') else 'unknown',
|
|
174
|
+
'keywords': []
|
|
175
|
+
})
|
|
176
|
+
return apis
|
|
177
|
+
|
|
178
|
+
# Additional curated APIs to add (high-value, popular APIs)
|
|
179
|
+
CURATED_APIS = [
|
|
180
|
+
# AI/ML
|
|
181
|
+
{"name": "OpenAI API", "description": "GPT-4, DALL-E, Whisper and more AI models", "category": "Machine Learning", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://platform.openai.com/docs/api-reference", "pricing": "paid", "keywords": ["ai", "gpt", "chatgpt", "dalle"]},
|
|
182
|
+
{"name": "Anthropic Claude API", "description": "Claude AI models for text generation and analysis", "category": "Machine Learning", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://docs.anthropic.com/claude/reference", "pricing": "paid", "keywords": ["ai", "claude", "llm"]},
|
|
183
|
+
{"name": "Hugging Face Inference API", "description": "Run ML models for NLP, vision, and more", "category": "Machine Learning", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://huggingface.co/docs/api-inference", "pricing": "freemium", "keywords": ["ai", "ml", "nlp", "transformers"]},
|
|
184
|
+
{"name": "Replicate API", "description": "Run open-source ML models in the cloud", "category": "Machine Learning", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://replicate.com/docs/reference/http", "pricing": "paid", "keywords": ["ai", "ml", "stable-diffusion"]},
|
|
185
|
+
{"name": "Stability AI", "description": "Stable Diffusion and image generation APIs", "category": "Machine Learning", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://platform.stability.ai/docs/api-reference", "pricing": "paid", "keywords": ["ai", "image", "stable-diffusion"]},
|
|
186
|
+
{"name": "Cohere API", "description": "NLP models for text generation and embeddings", "category": "Machine Learning", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://docs.cohere.com/reference/about", "pricing": "freemium", "keywords": ["ai", "nlp", "embeddings"]},
|
|
187
|
+
{"name": "Google Gemini API", "description": "Google's multimodal AI model", "category": "Machine Learning", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://ai.google.dev/docs", "pricing": "freemium", "keywords": ["ai", "google", "gemini"]},
|
|
188
|
+
{"name": "Mistral AI", "description": "Open-weight LLMs for enterprise", "category": "Machine Learning", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://docs.mistral.ai/api/", "pricing": "paid", "keywords": ["ai", "llm", "mistral"]},
|
|
189
|
+
{"name": "Perplexity API", "description": "AI-powered search and answers", "category": "Machine Learning", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://docs.perplexity.ai/", "pricing": "paid", "keywords": ["ai", "search", "perplexity"]},
|
|
190
|
+
{"name": "ElevenLabs API", "description": "AI voice synthesis and cloning", "category": "Machine Learning", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://elevenlabs.io/docs/api-reference", "pricing": "freemium", "keywords": ["ai", "voice", "tts", "speech"]},
|
|
191
|
+
{"name": "AssemblyAI", "description": "Speech-to-text and audio intelligence", "category": "Machine Learning", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://www.assemblyai.com/docs", "pricing": "freemium", "keywords": ["ai", "speech", "transcription"]},
|
|
192
|
+
{"name": "Deepgram API", "description": "Real-time speech recognition", "category": "Machine Learning", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://developers.deepgram.com/docs", "pricing": "freemium", "keywords": ["ai", "speech", "transcription"]},
|
|
193
|
+
|
|
194
|
+
# Payments
|
|
195
|
+
{"name": "Stripe API", "description": "Payment processing and financial infrastructure", "category": "Finance", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://stripe.com/docs/api", "pricing": "paid", "keywords": ["payments", "stripe", "finance"]},
|
|
196
|
+
{"name": "PayPal REST API", "description": "Payment processing and checkout", "category": "Finance", "auth": "OAuth", "https": True, "cors": "unknown", "link": "https://developer.paypal.com/docs/api/overview/", "pricing": "paid", "keywords": ["payments", "paypal"]},
|
|
197
|
+
{"name": "Square API", "description": "Payment processing and commerce platform", "category": "Finance", "auth": "OAuth", "https": True, "cors": "unknown", "link": "https://developer.squareup.com/reference/square", "pricing": "paid", "keywords": ["payments", "square", "pos"]},
|
|
198
|
+
{"name": "Plaid API", "description": "Connect bank accounts and financial data", "category": "Finance", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://plaid.com/docs/", "pricing": "paid", "keywords": ["banking", "plaid", "fintech"]},
|
|
199
|
+
{"name": "Wise API", "description": "International money transfers", "category": "Finance", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://api-docs.wise.com/", "pricing": "paid", "keywords": ["payments", "transfers", "wise"]},
|
|
200
|
+
|
|
201
|
+
# Communication
|
|
202
|
+
{"name": "Twilio API", "description": "SMS, voice, video, and messaging", "category": "Communication", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://www.twilio.com/docs/usage/api", "pricing": "paid", "keywords": ["sms", "voice", "twilio"]},
|
|
203
|
+
{"name": "SendGrid API", "description": "Email delivery and marketing", "category": "Email", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://docs.sendgrid.com/api-reference", "pricing": "freemium", "keywords": ["email", "sendgrid"]},
|
|
204
|
+
{"name": "Mailgun API", "description": "Transactional email service", "category": "Email", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://documentation.mailgun.com/en/latest/api_reference.html", "pricing": "freemium", "keywords": ["email", "mailgun"]},
|
|
205
|
+
{"name": "Postmark API", "description": "Transactional email delivery", "category": "Email", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://postmarkapp.com/developer", "pricing": "paid", "keywords": ["email", "postmark"]},
|
|
206
|
+
{"name": "Slack API", "description": "Workspace messaging and apps", "category": "Communication", "auth": "OAuth", "https": True, "cors": "yes", "link": "https://api.slack.com/", "pricing": "freemium", "keywords": ["slack", "messaging", "workspace"]},
|
|
207
|
+
{"name": "Discord API", "description": "Chat, voice, and community platform", "category": "Communication", "auth": "OAuth", "https": True, "cors": "yes", "link": "https://discord.com/developers/docs/intro", "pricing": "free", "keywords": ["discord", "chat", "gaming"]},
|
|
208
|
+
{"name": "Telegram Bot API", "description": "Create bots for Telegram", "category": "Communication", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://core.telegram.org/bots/api", "pricing": "free", "keywords": ["telegram", "bot", "messaging"]},
|
|
209
|
+
{"name": "WhatsApp Business API", "description": "Business messaging on WhatsApp", "category": "Communication", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://developers.facebook.com/docs/whatsapp/", "pricing": "paid", "keywords": ["whatsapp", "messaging"]},
|
|
210
|
+
|
|
211
|
+
# Social Media
|
|
212
|
+
{"name": "Twitter/X API v2", "description": "Access tweets, users, and trends", "category": "Social", "auth": "OAuth", "https": True, "cors": "unknown", "link": "https://developer.twitter.com/en/docs/twitter-api", "pricing": "freemium", "keywords": ["twitter", "x", "social"]},
|
|
213
|
+
{"name": "Instagram Graph API", "description": "Instagram business and creator accounts", "category": "Social", "auth": "OAuth", "https": True, "cors": "unknown", "link": "https://developers.facebook.com/docs/instagram-api/", "pricing": "free", "keywords": ["instagram", "social", "photos"]},
|
|
214
|
+
{"name": "Facebook Graph API", "description": "Access Facebook data and features", "category": "Social", "auth": "OAuth", "https": True, "cors": "unknown", "link": "https://developers.facebook.com/docs/graph-api/", "pricing": "free", "keywords": ["facebook", "social"]},
|
|
215
|
+
{"name": "LinkedIn API", "description": "Professional networking data", "category": "Social", "auth": "OAuth", "https": True, "cors": "unknown", "link": "https://learn.microsoft.com/en-us/linkedin/", "pricing": "free", "keywords": ["linkedin", "professional", "jobs"]},
|
|
216
|
+
{"name": "TikTok API", "description": "TikTok creator and business tools", "category": "Social", "auth": "OAuth", "https": True, "cors": "unknown", "link": "https://developers.tiktok.com/", "pricing": "free", "keywords": ["tiktok", "video", "social"]},
|
|
217
|
+
{"name": "Reddit API", "description": "Access Reddit posts and communities", "category": "Social", "auth": "OAuth", "https": True, "cors": "unknown", "link": "https://www.reddit.com/dev/api/", "pricing": "free", "keywords": ["reddit", "social", "community"]},
|
|
218
|
+
{"name": "YouTube Data API", "description": "YouTube videos, channels, and playlists", "category": "Video", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://developers.google.com/youtube/v3", "pricing": "free", "keywords": ["youtube", "video", "google"]},
|
|
219
|
+
{"name": "Vimeo API", "description": "Video hosting and streaming", "category": "Video", "auth": "OAuth", "https": True, "cors": "yes", "link": "https://developer.vimeo.com/api", "pricing": "freemium", "keywords": ["vimeo", "video"]},
|
|
220
|
+
|
|
221
|
+
# Maps & Location
|
|
222
|
+
{"name": "Google Maps Platform", "description": "Maps, routes, and places", "category": "Geocoding", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://developers.google.com/maps/documentation", "pricing": "freemium", "keywords": ["maps", "google", "geocoding"]},
|
|
223
|
+
{"name": "Mapbox API", "description": "Custom maps and location services", "category": "Geocoding", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://docs.mapbox.com/api/", "pricing": "freemium", "keywords": ["maps", "mapbox", "location"]},
|
|
224
|
+
{"name": "OpenStreetMap Nominatim", "description": "Free geocoding and reverse geocoding", "category": "Geocoding", "auth": "None", "https": True, "cors": "yes", "link": "https://nominatim.org/release-docs/develop/api/", "pricing": "free", "keywords": ["maps", "osm", "geocoding"]},
|
|
225
|
+
{"name": "HERE API", "description": "Location services and mapping", "category": "Geocoding", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://developer.here.com/documentation", "pricing": "freemium", "keywords": ["maps", "here", "location"]},
|
|
226
|
+
{"name": "What3Words API", "description": "3-word address system", "category": "Geocoding", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://developer.what3words.com/public-api", "pricing": "freemium", "keywords": ["geocoding", "addresses"]},
|
|
227
|
+
|
|
228
|
+
# Weather
|
|
229
|
+
{"name": "OpenWeatherMap API", "description": "Weather data and forecasts", "category": "Weather", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://openweathermap.org/api", "pricing": "freemium", "keywords": ["weather", "forecast"]},
|
|
230
|
+
{"name": "Tomorrow.io Weather API", "description": "Weather intelligence platform", "category": "Weather", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://docs.tomorrow.io/", "pricing": "freemium", "keywords": ["weather", "forecast"]},
|
|
231
|
+
{"name": "Visual Crossing Weather", "description": "Historical and forecast weather data", "category": "Weather", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://www.visualcrossing.com/weather-api", "pricing": "freemium", "keywords": ["weather", "historical"]},
|
|
232
|
+
{"name": "Weatherbit API", "description": "Weather forecasts and historical data", "category": "Weather", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://www.weatherbit.io/api", "pricing": "freemium", "keywords": ["weather", "forecast"]},
|
|
233
|
+
|
|
234
|
+
# Data & Analytics
|
|
235
|
+
{"name": "Algolia Search API", "description": "Search and discovery platform", "category": "Search", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://www.algolia.com/doc/api-reference/", "pricing": "freemium", "keywords": ["search", "algolia"]},
|
|
236
|
+
{"name": "Elasticsearch API", "description": "Distributed search and analytics", "category": "Search", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html", "pricing": "freemium", "keywords": ["search", "elasticsearch", "analytics"]},
|
|
237
|
+
{"name": "Mixpanel API", "description": "Product analytics platform", "category": "Analytics", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://developer.mixpanel.com/reference", "pricing": "freemium", "keywords": ["analytics", "mixpanel"]},
|
|
238
|
+
{"name": "Amplitude API", "description": "Product analytics for growth", "category": "Analytics", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://www.docs.developers.amplitude.com/", "pricing": "freemium", "keywords": ["analytics", "amplitude"]},
|
|
239
|
+
{"name": "Segment API", "description": "Customer data platform", "category": "Analytics", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://segment.com/docs/connections/sources/catalog/libraries/server/http-api/", "pricing": "freemium", "keywords": ["analytics", "segment", "cdp"]},
|
|
240
|
+
|
|
241
|
+
# Storage & Database
|
|
242
|
+
{"name": "Supabase API", "description": "Open source Firebase alternative", "category": "Database", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://supabase.com/docs/reference", "pricing": "freemium", "keywords": ["database", "supabase", "postgres"]},
|
|
243
|
+
{"name": "Firebase API", "description": "Google's app development platform", "category": "Database", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://firebase.google.com/docs/reference", "pricing": "freemium", "keywords": ["database", "firebase", "google"]},
|
|
244
|
+
{"name": "MongoDB Atlas API", "description": "Cloud database service", "category": "Database", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://www.mongodb.com/docs/atlas/api/", "pricing": "freemium", "keywords": ["database", "mongodb"]},
|
|
245
|
+
{"name": "Airtable API", "description": "Spreadsheet-database hybrid", "category": "Database", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://airtable.com/developers/web/api/introduction", "pricing": "freemium", "keywords": ["database", "airtable", "spreadsheet"]},
|
|
246
|
+
{"name": "Notion API", "description": "Connected workspace platform", "category": "Productivity", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://developers.notion.com/", "pricing": "freemium", "keywords": ["notion", "productivity", "workspace"]},
|
|
247
|
+
{"name": "Cloudinary API", "description": "Image and video management", "category": "Media", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://cloudinary.com/documentation/image_upload_api_reference", "pricing": "freemium", "keywords": ["images", "video", "cloudinary"]},
|
|
248
|
+
{"name": "imgix API", "description": "Real-time image processing", "category": "Media", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://docs.imgix.com/apis/rendering", "pricing": "paid", "keywords": ["images", "imgix"]},
|
|
249
|
+
|
|
250
|
+
# E-commerce
|
|
251
|
+
{"name": "Shopify Admin API", "description": "E-commerce platform", "category": "Shopping", "auth": "OAuth", "https": True, "cors": "unknown", "link": "https://shopify.dev/docs/api/admin", "pricing": "paid", "keywords": ["shopify", "ecommerce"]},
|
|
252
|
+
{"name": "WooCommerce REST API", "description": "WordPress e-commerce", "category": "Shopping", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://woocommerce.github.io/woocommerce-rest-api-docs/", "pricing": "free", "keywords": ["woocommerce", "wordpress", "ecommerce"]},
|
|
253
|
+
{"name": "BigCommerce API", "description": "E-commerce platform", "category": "Shopping", "auth": "OAuth", "https": True, "cors": "unknown", "link": "https://developer.bigcommerce.com/docs/rest", "pricing": "paid", "keywords": ["bigcommerce", "ecommerce"]},
|
|
254
|
+
{"name": "Amazon Product Advertising API", "description": "Amazon product data", "category": "Shopping", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://webservices.amazon.com/paapi5/documentation/", "pricing": "free", "keywords": ["amazon", "products", "affiliate"]},
|
|
255
|
+
|
|
256
|
+
# Development Tools
|
|
257
|
+
{"name": "GitHub API", "description": "Git repository and collaboration", "category": "Development", "auth": "OAuth", "https": True, "cors": "yes", "link": "https://docs.github.com/en/rest", "pricing": "freemium", "keywords": ["github", "git", "code"]},
|
|
258
|
+
{"name": "GitLab API", "description": "DevOps platform", "category": "Development", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://docs.gitlab.com/ee/api/", "pricing": "freemium", "keywords": ["gitlab", "git", "devops"]},
|
|
259
|
+
{"name": "Bitbucket API", "description": "Git code management", "category": "Development", "auth": "OAuth", "https": True, "cors": "unknown", "link": "https://developer.atlassian.com/cloud/bitbucket/rest/", "pricing": "freemium", "keywords": ["bitbucket", "git", "atlassian"]},
|
|
260
|
+
{"name": "npm Registry API", "description": "JavaScript package registry", "category": "Development", "auth": "None", "https": True, "cors": "yes", "link": "https://github.com/npm/registry/blob/master/docs/REGISTRY-API.md", "pricing": "free", "keywords": ["npm", "javascript", "packages"]},
|
|
261
|
+
{"name": "PyPI API", "description": "Python package index", "category": "Development", "auth": "None", "https": True, "cors": "yes", "link": "https://warehouse.pypa.io/api-reference/", "pricing": "free", "keywords": ["pypi", "python", "packages"]},
|
|
262
|
+
{"name": "Vercel API", "description": "Frontend cloud platform", "category": "Development", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://vercel.com/docs/rest-api", "pricing": "freemium", "keywords": ["vercel", "deployment", "frontend"]},
|
|
263
|
+
{"name": "Netlify API", "description": "Web deployment platform", "category": "Development", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://docs.netlify.com/api/get-started/", "pricing": "freemium", "keywords": ["netlify", "deployment"]},
|
|
264
|
+
{"name": "Railway API", "description": "Infrastructure platform", "category": "Development", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://docs.railway.app/reference/public-api", "pricing": "freemium", "keywords": ["railway", "deployment", "infrastructure"]},
|
|
265
|
+
{"name": "Render API", "description": "Cloud application hosting", "category": "Development", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://api-docs.render.com/reference/introduction", "pricing": "freemium", "keywords": ["render", "deployment", "cloud"]},
|
|
266
|
+
{"name": "Fly.io API", "description": "Global application platform", "category": "Development", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://fly.io/docs/machines/api/", "pricing": "freemium", "keywords": ["fly", "deployment", "edge"]},
|
|
267
|
+
|
|
268
|
+
# CRM & Business
|
|
269
|
+
{"name": "Salesforce REST API", "description": "CRM and business platform", "category": "Business", "auth": "OAuth", "https": True, "cors": "unknown", "link": "https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/", "pricing": "paid", "keywords": ["salesforce", "crm"]},
|
|
270
|
+
{"name": "HubSpot API", "description": "Marketing and sales platform", "category": "Business", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://developers.hubspot.com/docs/api/overview", "pricing": "freemium", "keywords": ["hubspot", "crm", "marketing"]},
|
|
271
|
+
{"name": "Pipedrive API", "description": "Sales CRM", "category": "Business", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://developers.pipedrive.com/docs/api/v1", "pricing": "paid", "keywords": ["pipedrive", "crm", "sales"]},
|
|
272
|
+
{"name": "Zendesk API", "description": "Customer service platform", "category": "Business", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://developer.zendesk.com/api-reference/", "pricing": "paid", "keywords": ["zendesk", "support", "customer-service"]},
|
|
273
|
+
{"name": "Intercom API", "description": "Customer messaging platform", "category": "Business", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://developers.intercom.com/docs/references/rest-api/api.intercom.io/", "pricing": "paid", "keywords": ["intercom", "messaging", "support"]},
|
|
274
|
+
{"name": "Freshdesk API", "description": "Customer support software", "category": "Business", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://developers.freshdesk.com/api/", "pricing": "freemium", "keywords": ["freshdesk", "support"]},
|
|
275
|
+
|
|
276
|
+
# Authentication
|
|
277
|
+
{"name": "Auth0 API", "description": "Identity platform", "category": "Security", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://auth0.com/docs/api", "pricing": "freemium", "keywords": ["auth0", "authentication", "identity"]},
|
|
278
|
+
{"name": "Okta API", "description": "Identity and access management", "category": "Security", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://developer.okta.com/docs/reference/", "pricing": "paid", "keywords": ["okta", "authentication", "iam"]},
|
|
279
|
+
{"name": "Clerk API", "description": "User authentication and management", "category": "Security", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://clerk.com/docs/reference/backend-api", "pricing": "freemium", "keywords": ["clerk", "authentication"]},
|
|
280
|
+
|
|
281
|
+
# News & Content
|
|
282
|
+
{"name": "NewsAPI", "description": "News articles from around the world", "category": "News", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://newsapi.org/docs", "pricing": "freemium", "keywords": ["news", "articles"]},
|
|
283
|
+
{"name": "The Guardian API", "description": "Guardian news content", "category": "News", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://open-platform.theguardian.com/documentation/", "pricing": "free", "keywords": ["news", "guardian"]},
|
|
284
|
+
{"name": "New York Times API", "description": "NYT articles and data", "category": "News", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://developer.nytimes.com/apis", "pricing": "free", "keywords": ["news", "nyt"]},
|
|
285
|
+
{"name": "Hacker News API", "description": "Tech news and discussions", "category": "News", "auth": "None", "https": True, "cors": "yes", "link": "https://github.com/HackerNews/API", "pricing": "free", "keywords": ["news", "tech", "hackernews"]},
|
|
286
|
+
{"name": "DEV.to API", "description": "Developer community content", "category": "Development", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://developers.forem.com/api/", "pricing": "free", "keywords": ["dev", "community", "articles"]},
|
|
287
|
+
{"name": "Medium API", "description": "Publishing platform", "category": "Media", "auth": "OAuth", "https": True, "cors": "unknown", "link": "https://github.com/Medium/medium-api-docs", "pricing": "free", "keywords": ["medium", "blog", "publishing"]},
|
|
288
|
+
|
|
289
|
+
# Entertainment
|
|
290
|
+
{"name": "Spotify Web API", "description": "Music streaming platform", "category": "Music", "auth": "OAuth", "https": True, "cors": "yes", "link": "https://developer.spotify.com/documentation/web-api", "pricing": "free", "keywords": ["spotify", "music", "streaming"]},
|
|
291
|
+
{"name": "Last.fm API", "description": "Music discovery and scrobbling", "category": "Music", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://www.last.fm/api", "pricing": "free", "keywords": ["lastfm", "music"]},
|
|
292
|
+
{"name": "Deezer API", "description": "Music streaming service", "category": "Music", "auth": "OAuth", "https": True, "cors": "yes", "link": "https://developers.deezer.com/api", "pricing": "free", "keywords": ["deezer", "music"]},
|
|
293
|
+
{"name": "TMDB API", "description": "Movie and TV database", "category": "Entertainment", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://developer.themoviedb.org/docs", "pricing": "free", "keywords": ["movies", "tv", "tmdb"]},
|
|
294
|
+
{"name": "OMDB API", "description": "Open movie database", "category": "Entertainment", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://www.omdbapi.com/", "pricing": "freemium", "keywords": ["movies", "omdb"]},
|
|
295
|
+
{"name": "IGDB API", "description": "Video game database", "category": "Games", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://api-docs.igdb.com/", "pricing": "free", "keywords": ["games", "igdb"]},
|
|
296
|
+
{"name": "RAWG API", "description": "Video games database", "category": "Games", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://rawg.io/apidocs", "pricing": "free", "keywords": ["games", "rawg"]},
|
|
297
|
+
{"name": "Twitch API", "description": "Live streaming platform", "category": "Entertainment", "auth": "OAuth", "https": True, "cors": "yes", "link": "https://dev.twitch.tv/docs/api/", "pricing": "free", "keywords": ["twitch", "streaming", "gaming"]},
|
|
298
|
+
|
|
299
|
+
# Crypto & Finance
|
|
300
|
+
{"name": "CoinGecko API", "description": "Cryptocurrency data", "category": "Cryptocurrency", "auth": "None", "https": True, "cors": "yes", "link": "https://www.coingecko.com/en/api/documentation", "pricing": "freemium", "keywords": ["crypto", "coingecko"]},
|
|
301
|
+
{"name": "CoinMarketCap API", "description": "Cryptocurrency market data", "category": "Cryptocurrency", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://coinmarketcap.com/api/documentation/v1/", "pricing": "freemium", "keywords": ["crypto", "coinmarketcap"]},
|
|
302
|
+
{"name": "Binance API", "description": "Cryptocurrency exchange", "category": "Cryptocurrency", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://binance-docs.github.io/apidocs/", "pricing": "free", "keywords": ["crypto", "binance", "trading"]},
|
|
303
|
+
{"name": "Coinbase API", "description": "Cryptocurrency platform", "category": "Cryptocurrency", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://docs.cloud.coinbase.com/", "pricing": "free", "keywords": ["crypto", "coinbase"]},
|
|
304
|
+
{"name": "Alpha Vantage API", "description": "Stock market data", "category": "Finance", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://www.alphavantage.co/documentation/", "pricing": "freemium", "keywords": ["stocks", "finance", "market"]},
|
|
305
|
+
{"name": "Polygon.io API", "description": "Stock and crypto market data", "category": "Finance", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://polygon.io/docs/", "pricing": "freemium", "keywords": ["stocks", "crypto", "market"]},
|
|
306
|
+
{"name": "Finnhub API", "description": "Financial market data", "category": "Finance", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://finnhub.io/docs/api", "pricing": "freemium", "keywords": ["stocks", "finance"]},
|
|
307
|
+
|
|
308
|
+
# Utility
|
|
309
|
+
{"name": "IPinfo API", "description": "IP address geolocation", "category": "Geocoding", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://ipinfo.io/developers", "pricing": "freemium", "keywords": ["ip", "geolocation"]},
|
|
310
|
+
{"name": "ip-api", "description": "IP geolocation API", "category": "Geocoding", "auth": "None", "https": True, "cors": "yes", "link": "https://ip-api.com/docs/", "pricing": "free", "keywords": ["ip", "geolocation"]},
|
|
311
|
+
{"name": "Abstract API", "description": "Various utility APIs", "category": "Development", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://www.abstractapi.com/", "pricing": "freemium", "keywords": ["utility", "validation"]},
|
|
312
|
+
{"name": "Hunter.io API", "description": "Email finder and verifier", "category": "Email", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://hunter.io/api-documentation/v2", "pricing": "freemium", "keywords": ["email", "hunter", "leads"]},
|
|
313
|
+
{"name": "Clearbit API", "description": "Business intelligence data", "category": "Business", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://clearbit.com/docs", "pricing": "paid", "keywords": ["clearbit", "enrichment", "data"]},
|
|
314
|
+
{"name": "FullContact API", "description": "Identity resolution", "category": "Business", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://platform.fullcontact.com/docs/apis/", "pricing": "paid", "keywords": ["identity", "enrichment"]},
|
|
315
|
+
{"name": "ZeroBounce API", "description": "Email validation", "category": "Email", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://www.zerobounce.net/docs/", "pricing": "freemium", "keywords": ["email", "validation"]},
|
|
316
|
+
{"name": "PDF.co API", "description": "PDF generation and parsing", "category": "Documents", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://developer.pdf.co/", "pricing": "freemium", "keywords": ["pdf", "documents"]},
|
|
317
|
+
{"name": "DocuSign API", "description": "Electronic signatures", "category": "Documents", "auth": "OAuth", "https": True, "cors": "unknown", "link": "https://developers.docusign.com/docs/", "pricing": "paid", "keywords": ["docusign", "esignature"]},
|
|
318
|
+
{"name": "Calendly API", "description": "Scheduling automation", "category": "Productivity", "auth": "OAuth", "https": True, "cors": "unknown", "link": "https://developer.calendly.com/api-docs", "pricing": "freemium", "keywords": ["calendly", "scheduling"]},
|
|
319
|
+
{"name": "Cal.com API", "description": "Open source scheduling", "category": "Productivity", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://cal.com/docs/enterprise-features/api", "pricing": "freemium", "keywords": ["scheduling", "calendar"]},
|
|
320
|
+
{"name": "Loom API", "description": "Video messaging platform", "category": "Video", "auth": "OAuth", "https": True, "cors": "unknown", "link": "https://dev.loom.com/docs/", "pricing": "freemium", "keywords": ["loom", "video", "recording"]},
|
|
321
|
+
{"name": "Mux API", "description": "Video infrastructure", "category": "Video", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://docs.mux.com/api-reference", "pricing": "paid", "keywords": ["mux", "video", "streaming"]},
|
|
322
|
+
{"name": "Bannerbear API", "description": "Automated image generation", "category": "Media", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://www.bannerbear.com/api/", "pricing": "paid", "keywords": ["images", "automation"]},
|
|
323
|
+
{"name": "Remove.bg API", "description": "Background removal", "category": "Media", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://www.remove.bg/api", "pricing": "freemium", "keywords": ["images", "background"]},
|
|
324
|
+
{"name": "Unsplash API", "description": "Free high-resolution photos", "category": "Media", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://unsplash.com/documentation", "pricing": "free", "keywords": ["images", "photos", "unsplash"]},
|
|
325
|
+
{"name": "Pexels API", "description": "Free stock photos and videos", "category": "Media", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://www.pexels.com/api/documentation/", "pricing": "free", "keywords": ["images", "photos", "pexels"]},
|
|
326
|
+
{"name": "Giphy API", "description": "GIF search and discovery", "category": "Media", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://developers.giphy.com/docs/api/", "pricing": "free", "keywords": ["gifs", "giphy"]},
|
|
327
|
+
{"name": "Tenor API", "description": "GIF search engine", "category": "Media", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://developers.google.com/tenor/guides/quickstart", "pricing": "free", "keywords": ["gifs", "tenor"]},
|
|
328
|
+
|
|
329
|
+
# More AI tools
|
|
330
|
+
{"name": "Pinecone API", "description": "Vector database for ML", "category": "Machine Learning", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://docs.pinecone.io/reference", "pricing": "freemium", "keywords": ["vectors", "embeddings", "ai"]},
|
|
331
|
+
{"name": "Weaviate API", "description": "Open source vector database", "category": "Machine Learning", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://weaviate.io/developers/weaviate/api", "pricing": "freemium", "keywords": ["vectors", "search", "ai"]},
|
|
332
|
+
{"name": "Qdrant API", "description": "Vector similarity search", "category": "Machine Learning", "auth": "apiKey", "https": True, "cors": "yes", "link": "https://qdrant.tech/documentation/", "pricing": "freemium", "keywords": ["vectors", "search"]},
|
|
333
|
+
{"name": "LangChain API", "description": "LLM application framework", "category": "Machine Learning", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://api.smith.langchain.com/redoc", "pricing": "freemium", "keywords": ["ai", "llm", "langchain"]},
|
|
334
|
+
{"name": "Groq API", "description": "Fast LLM inference", "category": "Machine Learning", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://console.groq.com/docs/quickstart", "pricing": "freemium", "keywords": ["ai", "llm", "groq"]},
|
|
335
|
+
{"name": "Together AI", "description": "Open source model inference", "category": "Machine Learning", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://docs.together.ai/reference", "pricing": "paid", "keywords": ["ai", "llm", "inference"]},
|
|
336
|
+
{"name": "Fireworks AI", "description": "Fast generative AI", "category": "Machine Learning", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://readme.fireworks.ai/reference", "pricing": "paid", "keywords": ["ai", "llm", "inference"]},
|
|
337
|
+
{"name": "Anyscale Endpoints", "description": "LLM serving platform", "category": "Machine Learning", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://docs.endpoints.anyscale.com/", "pricing": "paid", "keywords": ["ai", "llm", "ray"]},
|
|
338
|
+
{"name": "Writer API", "description": "Enterprise AI writing", "category": "Machine Learning", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://dev.writer.com/api-guides/api-reference", "pricing": "paid", "keywords": ["ai", "writing"]},
|
|
339
|
+
{"name": "Jasper AI API", "description": "AI content creation", "category": "Machine Learning", "auth": "apiKey", "https": True, "cors": "unknown", "link": "https://developers.jasper.ai/docs", "pricing": "paid", "keywords": ["ai", "content", "writing"]},
|
|
340
|
+
]
|
|
341
|
+
|
|
342
|
+
def main():
|
|
343
|
+
registry_path = Path.home() / "Projects" / "apiclaw" / "src" / "registry" / "apis.json"
|
|
344
|
+
|
|
345
|
+
print("Loading existing APIs...")
|
|
346
|
+
existing, original_data = load_existing_apis(registry_path)
|
|
347
|
+
print(f"Existing APIs: {len(original_data.get('apis', []))}")
|
|
348
|
+
|
|
349
|
+
all_apis = list(original_data.get('apis', []))
|
|
350
|
+
seen_links = {api.get('link', '').lower().rstrip('/') for api in all_apis if api.get('link')}
|
|
351
|
+
seen_names = {api.get('name', '').lower() for api in all_apis if api.get('name')}
|
|
352
|
+
|
|
353
|
+
def add_api(api):
|
|
354
|
+
link = api.get('link', '').lower().rstrip('/')
|
|
355
|
+
name = api.get('name', '').lower()
|
|
356
|
+
|
|
357
|
+
# Skip if duplicate
|
|
358
|
+
if link and link in seen_links:
|
|
359
|
+
return False
|
|
360
|
+
if name and name in seen_names:
|
|
361
|
+
return False
|
|
362
|
+
|
|
363
|
+
# Generate ID
|
|
364
|
+
api['id'] = generate_id(api.get('name', 'unknown'))
|
|
365
|
+
|
|
366
|
+
# Ensure all required fields
|
|
367
|
+
api.setdefault('description', '')
|
|
368
|
+
api.setdefault('category', 'Uncategorized')
|
|
369
|
+
api.setdefault('auth', 'None')
|
|
370
|
+
api.setdefault('https', True)
|
|
371
|
+
api.setdefault('cors', 'unknown')
|
|
372
|
+
api.setdefault('link', '')
|
|
373
|
+
api.setdefault('pricing', 'unknown')
|
|
374
|
+
api.setdefault('keywords', [])
|
|
375
|
+
|
|
376
|
+
# Clean description
|
|
377
|
+
api['description'] = api['description'][:300] if api['description'] else ''
|
|
378
|
+
|
|
379
|
+
all_apis.append(api)
|
|
380
|
+
if link:
|
|
381
|
+
seen_links.add(link)
|
|
382
|
+
if name:
|
|
383
|
+
seen_names.add(name)
|
|
384
|
+
return True
|
|
385
|
+
|
|
386
|
+
# Add curated APIs
|
|
387
|
+
print("\nAdding curated high-value APIs...")
|
|
388
|
+
added = 0
|
|
389
|
+
for api in CURATED_APIS:
|
|
390
|
+
if add_api(api.copy()):
|
|
391
|
+
added += 1
|
|
392
|
+
print(f"Added {added} curated APIs")
|
|
393
|
+
|
|
394
|
+
# Fetch from apis.guru
|
|
395
|
+
print("\nFetching from apis.guru...")
|
|
396
|
+
apis_guru_data = fetch_json("https://api.apis.guru/v2/list.json")
|
|
397
|
+
if apis_guru_data:
|
|
398
|
+
guru_apis = parse_apis_guru(apis_guru_data)
|
|
399
|
+
added = 0
|
|
400
|
+
for api in guru_apis:
|
|
401
|
+
if add_api(api):
|
|
402
|
+
added += 1
|
|
403
|
+
print(f"Added {added} APIs from apis.guru")
|
|
404
|
+
|
|
405
|
+
# Fetch public-apis entries
|
|
406
|
+
print("\nFetching from public-apis entries.json...")
|
|
407
|
+
public_apis = get_public_apis_github()
|
|
408
|
+
added = 0
|
|
409
|
+
for api in public_apis:
|
|
410
|
+
if add_api(api):
|
|
411
|
+
added += 1
|
|
412
|
+
print(f"Added {added} APIs from public-apis")
|
|
413
|
+
|
|
414
|
+
# Create final output
|
|
415
|
+
print(f"\nTotal APIs: {len(all_apis)}")
|
|
416
|
+
|
|
417
|
+
output = {
|
|
418
|
+
"version": "2.0.0",
|
|
419
|
+
"source": "APIClaw aggregated registry",
|
|
420
|
+
"lastUpdated": datetime.now().strftime("%Y-%m-%d"),
|
|
421
|
+
"count": len(all_apis),
|
|
422
|
+
"apis": all_apis
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
# Write output
|
|
426
|
+
print(f"Writing to {registry_path}...")
|
|
427
|
+
with open(registry_path, 'w') as f:
|
|
428
|
+
json.dump(output, f, indent=2)
|
|
429
|
+
|
|
430
|
+
print(f"\n✅ Done! Final count: {len(all_apis)} APIs")
|
|
431
|
+
return len(all_apis)
|
|
432
|
+
|
|
433
|
+
if __name__ == "__main__":
|
|
434
|
+
main()
|