@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.
Files changed (65) hide show
  1. package/EARN-CREDITS-SPEC.md +197 -0
  2. package/README.md +11 -7
  3. package/STATUS.md +16 -15
  4. package/VISION.md +123 -0
  5. package/dist/credentials.d.ts.map +1 -1
  6. package/dist/credentials.js +11 -0
  7. package/dist/credentials.js.map +1 -1
  8. package/dist/execute.d.ts.map +1 -1
  9. package/dist/execute.js +75 -0
  10. package/dist/execute.js.map +1 -1
  11. package/dist/index.js +1 -1
  12. package/dist/proxy.d.ts.map +1 -1
  13. package/dist/proxy.js +1 -1
  14. package/dist/proxy.js.map +1 -1
  15. package/dist/registry/apis.json +93516 -7139
  16. package/dist/registry/apis_expanded.json +3123 -3
  17. package/landing/public/book/index.html +339 -0
  18. package/landing/src/app/docs/page.tsx +142 -115
  19. package/landing/src/app/earn/page.tsx +305 -0
  20. package/landing/src/app/page.tsx +16 -11
  21. package/landing/src/lib/apis.json +1 -116054
  22. package/landing/src/lib/stats.json +5 -5
  23. package/package.json +4 -1
  24. package/scripts/add-public-apis.py +625 -0
  25. package/scripts/apisguru-data.json +158837 -0
  26. package/scripts/bonus-batch.py +250 -0
  27. package/scripts/bulk-add-apisguru.js +122 -0
  28. package/scripts/expand-2026-batch.py +335 -0
  29. package/scripts/expand-from-github.py +460 -0
  30. package/scripts/expand-n4ze3m.py +198 -0
  31. package/scripts/expand-niche-batch.py +269 -0
  32. package/scripts/expand-nordic-niche.py +189 -0
  33. package/scripts/expand-tonnyL.py +343 -0
  34. package/scripts/final-batch.py +315 -0
  35. package/scripts/final-push-06.py +242 -0
  36. package/scripts/mega-expansion.py +495 -0
  37. package/scripts/mega-final-06.py +512 -0
  38. package/scripts/more-apis.py +353 -0
  39. package/scripts/night-batch-05.py +546 -0
  40. package/scripts/night-batch-05b.py +427 -0
  41. package/scripts/night-expansion-02-23-batch2.py +284 -0
  42. package/scripts/night-expansion-02-23.py +383 -0
  43. package/scripts/night-expansion-03-batch2.py +336 -0
  44. package/scripts/night-expansion-03-batch3.py +392 -0
  45. package/scripts/night-expansion-03.py +573 -0
  46. package/scripts/night-expansion-04-23.py +461 -0
  47. package/scripts/night-expansion-05-23-batch2.py +431 -0
  48. package/scripts/night-expansion-05-23-batch3.py +366 -0
  49. package/scripts/night-expansion-05-23-final.py +349 -0
  50. package/scripts/night-expansion-05-23.py +540 -0
  51. package/scripts/night-expansion-06-23-batch2.py +261 -0
  52. package/scripts/night-expansion-06-23-batch3.py +213 -0
  53. package/scripts/night-expansion-06-23-batch4.py +261 -0
  54. package/scripts/night-expansion-06-23.py +309 -0
  55. package/scripts/night-expansion-06.py +325 -0
  56. package/scripts/night-expansion.py +441 -0
  57. package/scripts/night-final-batch-04-23.py +547 -0
  58. package/scripts/night-mega-batch-04-23.py +874 -0
  59. package/scripts/super-final-06.py +341 -0
  60. package/src/credentials.ts +12 -0
  61. package/src/execute.ts +93 -0
  62. package/src/index.ts +1 -1
  63. package/src/proxy.ts +1 -1
  64. package/src/registry/apis.json +93516 -7139
  65. package/src/registry/apis_expanded.json +3123 -3
@@ -0,0 +1,392 @@
1
+ #!/usr/bin/env python3
2
+ """APIClaw Night Expansion 03:00 - Batch 3 - APIs.guru OpenAPI specs"""
3
+
4
+ import json
5
+ import os
6
+ from datetime import datetime
7
+
8
+ REGISTRY_PATH = os.path.expanduser("~/Projects/apiclaw/src/registry/apis_expanded.json")
9
+
10
+ def load_registry():
11
+ with open(REGISTRY_PATH) as f:
12
+ return json.load(f)
13
+
14
+ def save_registry(data):
15
+ with open(REGISTRY_PATH, "w") as f:
16
+ json.dump(data, f, indent=2)
17
+
18
+ def generate_id(name, category):
19
+ clean = name.lower().replace(" ", "-").replace(".", "-")[:20]
20
+ return f"{category.lower()[:3]}-{clean}-{hash(name) % 10000}"
21
+
22
+ # Batch 3: APIs from apis.guru (OpenAPI specs)
23
+ BATCH3_APIS = [
24
+ # 1Forge & Financial
25
+ {"name": "1Forge Finance", "description": "Stock and Forex Data and Realtime Quotes", "category": "Finance", "baseUrl": "https://1forge.com/", "authType": "apiKey"},
26
+ {"name": "1Password Events", "description": "1Password Events API", "category": "Security", "baseUrl": "https://events.1password.com/", "authType": "apiKey"},
27
+ {"name": "1Password Connect", "description": "REST API for 1Password Connect", "category": "Security", "baseUrl": "https://1password.local/", "authType": "apiKey"},
28
+
29
+ # Ably
30
+ {"name": "Ably Platform", "description": "REST API for Ably realtime messaging", "category": "Communication", "baseUrl": "https://rest.ably.io/", "authType": "apiKey"},
31
+ {"name": "Ably Control", "description": "Ably Control API for account management", "category": "Communication", "baseUrl": "https://control.ably.net/", "authType": "apiKey"},
32
+
33
+ # Abstract APIs
34
+ {"name": "Abstract Geolocation", "description": "IP geolocation API", "category": "Geocoding", "baseUrl": "https://ipgeolocation.abstractapi.com/", "authType": "apiKey"},
35
+
36
+ # Adafruit
37
+ {"name": "Adafruit IO", "description": "IoT REST API", "category": "IoT", "baseUrl": "https://io.adafruit.com/api/", "authType": "apiKey"},
38
+
39
+ # Adobe
40
+ {"name": "Adobe Experience Manager", "description": "AEM API for content management", "category": "CMS", "baseUrl": "https://aem.adobe.com/", "authType": "apiKey"},
41
+
42
+ # Adyen
43
+ {"name": "Adyen Account", "description": "Account management for Adyen platform", "category": "Payments", "baseUrl": "https://cal-test.adyen.com/", "authType": "apiKey"},
44
+ {"name": "Adyen Balance Control", "description": "Transfer funds between merchant accounts", "category": "Payments", "baseUrl": "https://pal-test.adyen.com/", "authType": "apiKey"},
45
+ {"name": "Adyen Checkout", "description": "Adyen payment checkout API", "category": "Payments", "baseUrl": "https://checkout-test.adyen.com/", "authType": "apiKey"},
46
+ {"name": "Adyen Configuration", "description": "Balance platform configuration", "category": "Payments", "baseUrl": "https://balanceplatform-api-test.adyen.com/", "authType": "apiKey"},
47
+ {"name": "Adyen BinLookup", "description": "BIN lookup for card information", "category": "Payments", "baseUrl": "https://pal-test.adyen.com/", "authType": "apiKey"},
48
+
49
+ # Agco & Agriculture
50
+ {"name": "AGCO Fuse", "description": "Agricultural equipment API", "category": "Agriculture", "baseUrl": "https://api.agcodigital.com/", "authType": "oauth"},
51
+ {"name": "AgroMonitoring", "description": "Agricultural monitoring API", "category": "Agriculture", "baseUrl": "https://api.agromonitoring.com/", "authType": "apiKey"},
52
+ {"name": "Agridata", "description": "Agricultural data API", "category": "Agriculture", "baseUrl": "https://api.agridata.com/", "authType": "apiKey"},
53
+
54
+ # Air Quality
55
+ {"name": "AirVisual", "description": "Air quality data worldwide", "category": "Environment", "baseUrl": "https://api.airvisual.com/", "authType": "apiKey"},
56
+ {"name": "Breezometer", "description": "Air quality and pollen data", "category": "Environment", "baseUrl": "https://api.breezometer.com/", "authType": "apiKey"},
57
+ {"name": "AQICN", "description": "Air quality index data", "category": "Environment", "baseUrl": "https://aqicn.org/", "authType": "apiKey"},
58
+
59
+ # Airline & Aviation
60
+ {"name": "Amadeus", "description": "Airline and travel API", "category": "Transportation", "baseUrl": "https://api.amadeus.com/", "authType": "oauth"},
61
+ {"name": "Skyscanner", "description": "Flight search API", "category": "Transportation", "baseUrl": "https://partners.api.skyscanner.net/", "authType": "apiKey"},
62
+ {"name": "Kiwi.com", "description": "Flight search and booking", "category": "Transportation", "baseUrl": "https://api.tequila.kiwi.com/", "authType": "apiKey"},
63
+ {"name": "Duffel", "description": "Travel booking API", "category": "Transportation", "baseUrl": "https://api.duffel.com/", "authType": "bearer"},
64
+ {"name": "Travelpayouts", "description": "Affiliate travel API", "category": "Transportation", "baseUrl": "https://api.travelpayouts.com/", "authType": "apiKey"},
65
+
66
+ # Analytics & Monitoring
67
+ {"name": "Amplitude", "description": "Product analytics", "category": "Analytics", "baseUrl": "https://analytics.amplitude.com/", "authType": "apiKey"},
68
+ {"name": "Heap", "description": "Digital insights platform", "category": "Analytics", "baseUrl": "https://heapanalytics.com/api/", "authType": "apiKey"},
69
+ {"name": "FullStory", "description": "Digital experience analytics", "category": "Analytics", "baseUrl": "https://api.fullstory.com/", "authType": "apiKey"},
70
+ {"name": "Hotjar", "description": "Behavior analytics", "category": "Analytics", "baseUrl": "https://insights.hotjar.com/api/", "authType": "apiKey"},
71
+ {"name": "LogRocket", "description": "Session replay and analytics", "category": "Analytics", "baseUrl": "https://app.logrocket.com/api/", "authType": "apiKey"},
72
+
73
+ # APIs for APIs
74
+ {"name": "RapidAPI", "description": "API marketplace", "category": "Development", "baseUrl": "https://rapidapi.com/", "authType": "apiKey"},
75
+ {"name": "APILayer", "description": "API marketplace", "category": "Development", "baseUrl": "https://apilayer.com/", "authType": "apiKey"},
76
+ {"name": "Kong", "description": "API gateway", "category": "Development", "baseUrl": "https://api.konghq.com/", "authType": "apiKey"},
77
+ {"name": "Tyk", "description": "API management", "category": "Development", "baseUrl": "https://tyk.io/", "authType": "apiKey"},
78
+ {"name": "Postman", "description": "API platform", "category": "Development", "baseUrl": "https://api.getpostman.com/", "authType": "apiKey"},
79
+ {"name": "SwaggerHub", "description": "API design and documentation", "category": "Development", "baseUrl": "https://api.swaggerhub.com/", "authType": "apiKey"},
80
+ {"name": "Stoplight", "description": "API design platform", "category": "Development", "baseUrl": "https://stoplight.io/api/", "authType": "apiKey"},
81
+
82
+ # App Store APIs
83
+ {"name": "App Store Connect", "description": "Apple App Store management", "category": "Development", "baseUrl": "https://api.appstoreconnect.apple.com/", "authType": "jwt"},
84
+ {"name": "Google Play Developer", "description": "Play Store management", "category": "Development", "baseUrl": "https://androidpublisher.googleapis.com/", "authType": "oauth"},
85
+ {"name": "App Annie", "description": "App market data", "category": "Analytics", "baseUrl": "https://api.appannie.com/", "authType": "apiKey"},
86
+ {"name": "SensorTower", "description": "Mobile app intelligence", "category": "Analytics", "baseUrl": "https://api.sensortower.com/", "authType": "apiKey"},
87
+ {"name": "Appfigures", "description": "App analytics", "category": "Analytics", "baseUrl": "https://api.appfigures.com/", "authType": "apiKey"},
88
+
89
+ # Appointment & Scheduling
90
+ {"name": "Acuity Scheduling", "description": "Appointment scheduling", "category": "Business", "baseUrl": "https://acuityscheduling.com/api/", "authType": "basic"},
91
+ {"name": "Calendly", "description": "Scheduling API", "category": "Business", "baseUrl": "https://api.calendly.com/", "authType": "oauth"},
92
+ {"name": "Cal.com", "description": "Open source scheduling", "category": "Business", "baseUrl": "https://api.cal.com/", "authType": "apiKey"},
93
+ {"name": "YouCanBook.me", "description": "Online scheduling", "category": "Business", "baseUrl": "https://api.youcanbook.me/", "authType": "apiKey"},
94
+ {"name": "Doodle", "description": "Meeting scheduler", "category": "Business", "baseUrl": "https://doodle.com/api/", "authType": "oauth"},
95
+ {"name": "Setmore", "description": "Appointment scheduling", "category": "Business", "baseUrl": "https://api.setmore.com/", "authType": "apiKey"},
96
+ {"name": "SimplyBook.me", "description": "Booking system", "category": "Business", "baseUrl": "https://user-api.simplybook.me/", "authType": "apiKey"},
97
+
98
+ # AR & 3D
99
+ {"name": "Echo3D", "description": "3D asset management", "category": "AR/VR", "baseUrl": "https://api.echo3d.co/", "authType": "apiKey"},
100
+ {"name": "Sketchfab", "description": "3D model platform", "category": "AR/VR", "baseUrl": "https://api.sketchfab.com/", "authType": "oauth"},
101
+ {"name": "Poly (Google)", "description": "3D object library", "category": "AR/VR", "baseUrl": "https://poly.googleapis.com/", "authType": "apiKey"},
102
+ {"name": "CGTrader", "description": "3D model marketplace", "category": "AR/VR", "baseUrl": "https://www.cgtrader.com/api/", "authType": "apiKey"},
103
+ {"name": "TurboSquid", "description": "3D model marketplace", "category": "AR/VR", "baseUrl": "https://www.turbosquid.com/API/", "authType": "apiKey"},
104
+
105
+ # Audio & Podcasts
106
+ {"name": "Anchor", "description": "Podcast hosting", "category": "Media", "baseUrl": "https://anchor.fm/api/", "authType": "oauth"},
107
+ {"name": "Buzzsprout", "description": "Podcast hosting", "category": "Media", "baseUrl": "https://www.buzzsprout.com/api/", "authType": "apiKey"},
108
+ {"name": "Transistor", "description": "Podcast hosting", "category": "Media", "baseUrl": "https://api.transistor.fm/", "authType": "apiKey"},
109
+ {"name": "Podbean", "description": "Podcast hosting", "category": "Media", "baseUrl": "https://api.podbean.com/", "authType": "oauth"},
110
+ {"name": "Listen Notes", "description": "Podcast search", "category": "Media", "baseUrl": "https://listen-api.listennotes.com/", "authType": "apiKey"},
111
+ {"name": "Podcast Index", "description": "Open podcast database", "category": "Media", "baseUrl": "https://api.podcastindex.org/", "authType": "apiKey"},
112
+ {"name": "Audd.io", "description": "Music recognition", "category": "Media", "baseUrl": "https://api.audd.io/", "authType": "apiKey"},
113
+ {"name": "ACRCloud", "description": "Audio recognition", "category": "Media", "baseUrl": "https://api.acrcloud.com/", "authType": "apiKey"},
114
+
115
+ # Background Checks
116
+ {"name": "Checkr", "description": "Background checks", "category": "Security", "baseUrl": "https://api.checkr.com/", "authType": "basic"},
117
+ {"name": "GoodHire", "description": "Background checks", "category": "Security", "baseUrl": "https://api.goodhire.com/", "authType": "apiKey"},
118
+ {"name": "Sterling", "description": "Background screening", "category": "Security", "baseUrl": "https://api.sterlingcheck.com/", "authType": "oauth"},
119
+
120
+ # Banking APIs
121
+ {"name": "Plaid", "description": "Banking data", "category": "Finance", "baseUrl": "https://production.plaid.com/", "authType": "apiKey"},
122
+ {"name": "Finicity", "description": "Financial data aggregation", "category": "Finance", "baseUrl": "https://api.finicity.com/", "authType": "apiKey"},
123
+ {"name": "Yodlee", "description": "Financial data platform", "category": "Finance", "baseUrl": "https://api.yodlee.com/", "authType": "oauth"},
124
+ {"name": "Tink", "description": "Open banking platform", "category": "Finance", "baseUrl": "https://api.tink.com/", "authType": "oauth"},
125
+ {"name": "TrueLayer", "description": "Open banking", "category": "Finance", "baseUrl": "https://api.truelayer.com/", "authType": "oauth"},
126
+ {"name": "Salt Edge", "description": "Open banking aggregation", "category": "Finance", "baseUrl": "https://www.saltedge.com/api/", "authType": "apiKey"},
127
+ {"name": "Nordigen", "description": "EU open banking", "category": "Finance", "baseUrl": "https://ob.nordigen.com/api/", "authType": "apiKey"},
128
+
129
+ # Billing & Subscriptions
130
+ {"name": "Stripe Billing", "description": "Subscription management", "category": "Commerce", "baseUrl": "https://api.stripe.com/", "authType": "apiKey"},
131
+ {"name": "Chargebee", "description": "Subscription billing", "category": "Commerce", "baseUrl": "https://sitename.chargebee.com/api/", "authType": "basic"},
132
+ {"name": "Recurly", "description": "Subscription management", "category": "Commerce", "baseUrl": "https://v3.recurly.com/", "authType": "apiKey"},
133
+ {"name": "Paddle", "description": "SaaS commerce", "category": "Commerce", "baseUrl": "https://vendors.paddle.com/api/", "authType": "apiKey"},
134
+ {"name": "Zuora", "description": "Subscription platform", "category": "Commerce", "baseUrl": "https://rest.zuora.com/", "authType": "oauth"},
135
+ {"name": "FastSpring", "description": "E-commerce platform", "category": "Commerce", "baseUrl": "https://api.fastspring.com/", "authType": "basic"},
136
+ {"name": "Gumroad", "description": "Creator commerce", "category": "Commerce", "baseUrl": "https://api.gumroad.com/", "authType": "oauth"},
137
+ {"name": "Lemon Squeezy", "description": "Digital commerce", "category": "Commerce", "baseUrl": "https://api.lemonsqueezy.com/", "authType": "apiKey"},
138
+
139
+ # Bio & Health Tech
140
+ {"name": "23andMe", "description": "Genetics API", "category": "Health", "baseUrl": "https://api.23andme.com/", "authType": "oauth"},
141
+ {"name": "MyFitnessPal", "description": "Nutrition tracking", "category": "Health", "baseUrl": "https://www.myfitnesspal.com/api/", "authType": "oauth"},
142
+ {"name": "Nutritionix", "description": "Nutrition database", "category": "Health", "baseUrl": "https://trackapi.nutritionix.com/", "authType": "apiKey"},
143
+ {"name": "USDA FoodData", "description": "Food nutrition data", "category": "Health", "baseUrl": "https://api.nal.usda.gov/fdc/", "authType": "apiKey"},
144
+ {"name": "Edamam Food", "description": "Food database", "category": "Health", "baseUrl": "https://api.edamam.com/api/food-database/", "authType": "apiKey"},
145
+
146
+ # Blogging Platforms
147
+ {"name": "Medium", "description": "Blog publishing", "category": "Content", "baseUrl": "https://api.medium.com/", "authType": "oauth"},
148
+ {"name": "Ghost Admin", "description": "Ghost CMS API", "category": "CMS", "baseUrl": "https://yoursite.ghost.io/ghost/api/", "authType": "apiKey"},
149
+ {"name": "Hashnode", "description": "Developer blogging", "category": "Content", "baseUrl": "https://api.hashnode.com/", "authType": "apiKey"},
150
+ {"name": "DEV.to", "description": "Developer community", "category": "Content", "baseUrl": "https://dev.to/api/", "authType": "apiKey"},
151
+ {"name": "WordPress", "description": "WordPress REST API", "category": "CMS", "baseUrl": "https://developer.wordpress.com/docs/api/", "authType": "oauth"},
152
+ {"name": "Webflow", "description": "Website builder API", "category": "CMS", "baseUrl": "https://api.webflow.com/", "authType": "oauth"},
153
+ {"name": "Contentful", "description": "Headless CMS", "category": "CMS", "baseUrl": "https://cdn.contentful.com/", "authType": "apiKey"},
154
+ {"name": "Strapi", "description": "Headless CMS", "category": "CMS", "baseUrl": "https://strapi.io/api/", "authType": "jwt"},
155
+ {"name": "Sanity", "description": "Content platform", "category": "CMS", "baseUrl": "https://api.sanity.io/", "authType": "apiKey"},
156
+ {"name": "Prismic", "description": "Headless CMS", "category": "CMS", "baseUrl": "https://prismic.io/api/", "authType": "apiKey"},
157
+ {"name": "DatoCMS", "description": "Headless CMS", "category": "CMS", "baseUrl": "https://site-api.datocms.com/", "authType": "bearer"},
158
+ {"name": "Storyblok", "description": "Headless CMS", "category": "CMS", "baseUrl": "https://api.storyblok.com/", "authType": "apiKey"},
159
+ {"name": "Hygraph", "description": "Federated content platform", "category": "CMS", "baseUrl": "https://api.hygraph.com/", "authType": "apiKey"},
160
+ {"name": "Builder.io", "description": "Visual CMS", "category": "CMS", "baseUrl": "https://builder.io/api/", "authType": "apiKey"},
161
+
162
+ # Bots & Automation
163
+ {"name": "Telegram Bot", "description": "Telegram messaging bots", "category": "Communication", "baseUrl": "https://api.telegram.org/bot", "authType": "apiKey"},
164
+ {"name": "Discord Bot", "description": "Discord bots", "category": "Communication", "baseUrl": "https://discord.com/api/", "authType": "oauth"},
165
+ {"name": "Slack Bot", "description": "Slack workspace bots", "category": "Communication", "baseUrl": "https://slack.com/api/", "authType": "oauth"},
166
+ {"name": "Microsoft Bot Framework", "description": "Bot building", "category": "AI/ML", "baseUrl": "https://api.botframework.com/", "authType": "oauth"},
167
+ {"name": "Dialogflow", "description": "Conversational AI", "category": "AI/ML", "baseUrl": "https://dialogflow.googleapis.com/", "authType": "oauth"},
168
+ {"name": "Amazon Lex", "description": "Conversational interfaces", "category": "AI/ML", "baseUrl": "https://runtime.lex.amazonaws.com/", "authType": "apiKey"},
169
+ {"name": "Rasa", "description": "Open source conversational AI", "category": "AI/ML", "baseUrl": "https://rasa.com/api/", "authType": "apiKey"},
170
+ {"name": "Botpress", "description": "Open source bot platform", "category": "AI/ML", "baseUrl": "https://botpress.com/api/", "authType": "apiKey"},
171
+
172
+ # Browser Extensions
173
+ {"name": "Chrome Web Store", "description": "Extension marketplace", "category": "Development", "baseUrl": "https://www.googleapis.com/chromewebstore/", "authType": "oauth"},
174
+ {"name": "Firefox Add-ons", "description": "Extension marketplace", "category": "Development", "baseUrl": "https://addons.mozilla.org/api/", "authType": "apiKey"},
175
+
176
+ # Business Intelligence
177
+ {"name": "Tableau", "description": "Business analytics", "category": "Analytics", "baseUrl": "https://tableau.com/api/", "authType": "oauth"},
178
+ {"name": "Power BI", "description": "Microsoft BI", "category": "Analytics", "baseUrl": "https://api.powerbi.com/", "authType": "oauth"},
179
+ {"name": "Looker", "description": "Business intelligence", "category": "Analytics", "baseUrl": "https://your.looker.com/api/", "authType": "apiKey"},
180
+ {"name": "Metabase", "description": "Open source BI", "category": "Analytics", "baseUrl": "https://your.metabase.com/api/", "authType": "apiKey"},
181
+ {"name": "Sisense", "description": "Analytics platform", "category": "Analytics", "baseUrl": "https://your.sisense.com/api/", "authType": "apiKey"},
182
+ {"name": "Domo", "description": "Business cloud", "category": "Analytics", "baseUrl": "https://api.domo.com/", "authType": "oauth"},
183
+
184
+ # CDN & Edge
185
+ {"name": "Cloudflare", "description": "CDN and security", "category": "Infrastructure", "baseUrl": "https://api.cloudflare.com/client/v4/", "authType": "apiKey"},
186
+ {"name": "Fastly", "description": "Edge cloud platform", "category": "Infrastructure", "baseUrl": "https://api.fastly.com/", "authType": "apiKey"},
187
+ {"name": "Akamai", "description": "CDN and security", "category": "Infrastructure", "baseUrl": "https://api.akamai.com/", "authType": "oauth"},
188
+ {"name": "KeyCDN", "description": "Content delivery", "category": "Infrastructure", "baseUrl": "https://api.keycdn.com/", "authType": "apiKey"},
189
+ {"name": "BunnyCDN", "description": "Content delivery", "category": "Infrastructure", "baseUrl": "https://api.bunny.net/", "authType": "apiKey"},
190
+ {"name": "StackPath", "description": "Edge services", "category": "Infrastructure", "baseUrl": "https://gateway.stackpath.com/", "authType": "oauth"},
191
+
192
+ # Chat & Messaging
193
+ {"name": "Sendbird", "description": "Chat API", "category": "Communication", "baseUrl": "https://api.sendbird.com/", "authType": "apiKey"},
194
+ {"name": "Stream", "description": "Chat and feeds", "category": "Communication", "baseUrl": "https://chat.stream-io-api.com/", "authType": "apiKey"},
195
+ {"name": "PubNub", "description": "Real-time messaging", "category": "Communication", "baseUrl": "https://ps.pndsn.com/", "authType": "apiKey"},
196
+ {"name": "Pusher", "description": "Real-time channels", "category": "Communication", "baseUrl": "https://api.pusher.com/", "authType": "apiKey"},
197
+ {"name": "Crisp", "description": "Customer messaging", "category": "Communication", "baseUrl": "https://api.crisp.chat/", "authType": "apiKey"},
198
+ {"name": "Tawk.to", "description": "Live chat", "category": "Communication", "baseUrl": "https://api.tawk.to/", "authType": "apiKey"},
199
+ {"name": "LiveChat", "description": "Customer service chat", "category": "Communication", "baseUrl": "https://api.livechatinc.com/", "authType": "oauth"},
200
+ {"name": "Drift", "description": "Conversational marketing", "category": "Communication", "baseUrl": "https://api.drift.com/", "authType": "oauth"},
201
+ {"name": "Chatwoot", "description": "Open source customer engagement", "category": "Communication", "baseUrl": "https://app.chatwoot.com/api/", "authType": "apiKey"},
202
+
203
+ # Code Quality
204
+ {"name": "SonarQube", "description": "Code quality", "category": "Development", "baseUrl": "https://sonarcloud.io/api/", "authType": "apiKey"},
205
+ {"name": "Codacy", "description": "Code review automation", "category": "Development", "baseUrl": "https://api.codacy.com/", "authType": "apiKey"},
206
+ {"name": "CodeClimate", "description": "Code quality", "category": "Development", "baseUrl": "https://api.codeclimate.com/", "authType": "apiKey"},
207
+ {"name": "Codecov", "description": "Code coverage", "category": "Development", "baseUrl": "https://codecov.io/api/", "authType": "apiKey"},
208
+ {"name": "Coveralls", "description": "Code coverage", "category": "Development", "baseUrl": "https://coveralls.io/api/", "authType": "apiKey"},
209
+ {"name": "Snyk", "description": "Security scanning", "category": "Security", "baseUrl": "https://snyk.io/api/", "authType": "apiKey"},
210
+ {"name": "Dependabot", "description": "Dependency updates", "category": "Development", "baseUrl": "https://api.dependabot.com/", "authType": "apiKey"},
211
+ {"name": "Renovate", "description": "Dependency updates", "category": "Development", "baseUrl": "https://api.renovatebot.com/", "authType": "apiKey"},
212
+
213
+ # Company Data
214
+ {"name": "Crunchbase", "description": "Company data", "category": "Business", "baseUrl": "https://api.crunchbase.com/", "authType": "apiKey"},
215
+ {"name": "Clearbit", "description": "Business data", "category": "Business", "baseUrl": "https://company.clearbit.com/", "authType": "apiKey"},
216
+ {"name": "PitchBook", "description": "Private market data", "category": "Finance", "baseUrl": "https://api.pitchbook.com/", "authType": "apiKey"},
217
+ {"name": "ZoomInfo", "description": "B2B data", "category": "Business", "baseUrl": "https://api.zoominfo.com/", "authType": "oauth"},
218
+ {"name": "Apollo.io", "description": "Sales intelligence", "category": "Business", "baseUrl": "https://api.apollo.io/", "authType": "apiKey"},
219
+ {"name": "Hunter.io", "description": "Email finder", "category": "Business", "baseUrl": "https://api.hunter.io/", "authType": "apiKey"},
220
+ {"name": "Lusha", "description": "B2B contact data", "category": "Business", "baseUrl": "https://api.lusha.com/", "authType": "apiKey"},
221
+ {"name": "FullContact", "description": "Identity resolution", "category": "Business", "baseUrl": "https://api.fullcontact.com/", "authType": "apiKey"},
222
+
223
+ # Contract & Legal
224
+ {"name": "DocuSign", "description": "e-Signatures", "category": "Business", "baseUrl": "https://www.docusign.net/restapi/", "authType": "oauth"},
225
+ {"name": "HelloSign", "description": "eSignature API", "category": "Business", "baseUrl": "https://api.hellosign.com/", "authType": "apiKey"},
226
+ {"name": "PandaDoc", "description": "Document automation", "category": "Business", "baseUrl": "https://api.pandadoc.com/", "authType": "oauth"},
227
+ {"name": "Ironclad", "description": "Contract management", "category": "Business", "baseUrl": "https://api.ironcladapp.com/", "authType": "apiKey"},
228
+ {"name": "Conga", "description": "Document generation", "category": "Business", "baseUrl": "https://api.conga.com/", "authType": "oauth"},
229
+
230
+ # Customer Success
231
+ {"name": "Gainsight", "description": "Customer success", "category": "Business", "baseUrl": "https://api.gainsight.com/", "authType": "oauth"},
232
+ {"name": "ChurnZero", "description": "Customer success", "category": "Business", "baseUrl": "https://api.churnzero.net/", "authType": "apiKey"},
233
+ {"name": "Totango", "description": "Customer success", "category": "Business", "baseUrl": "https://api.totango.com/", "authType": "apiKey"},
234
+ {"name": "Vitally", "description": "Customer success", "category": "Business", "baseUrl": "https://api.vitally.io/", "authType": "apiKey"},
235
+
236
+ # Data Enrichment
237
+ {"name": "Pipl", "description": "People search", "category": "Data", "baseUrl": "https://api.pipl.com/", "authType": "apiKey"},
238
+ {"name": "PeopleDataLabs", "description": "Person and company data", "category": "Data", "baseUrl": "https://api.peopledatalabs.com/", "authType": "apiKey"},
239
+ {"name": "Slintel", "description": "Sales intelligence", "category": "Data", "baseUrl": "https://api.slintel.com/", "authType": "apiKey"},
240
+ {"name": "LeadGenius", "description": "B2B data", "category": "Data", "baseUrl": "https://api.leadgenius.com/", "authType": "apiKey"},
241
+ {"name": "Snov.io", "description": "Lead generation", "category": "Data", "baseUrl": "https://api.snov.io/", "authType": "apiKey"},
242
+
243
+ # Database APIs
244
+ {"name": "MongoDB Atlas", "description": "MongoDB cloud", "category": "Database", "baseUrl": "https://cloud.mongodb.com/api/atlas/", "authType": "apiKey"},
245
+ {"name": "Fauna", "description": "Serverless database", "category": "Database", "baseUrl": "https://db.fauna.com/", "authType": "apiKey"},
246
+ {"name": "PlanetScale", "description": "MySQL serverless", "category": "Database", "baseUrl": "https://api.planetscale.com/", "authType": "apiKey"},
247
+ {"name": "CockroachDB", "description": "Distributed SQL", "category": "Database", "baseUrl": "https://cockroachlabs.cloud/", "authType": "apiKey"},
248
+ {"name": "Neon", "description": "Serverless Postgres", "category": "Database", "baseUrl": "https://console.neon.tech/api/", "authType": "apiKey"},
249
+ {"name": "Upstash", "description": "Serverless Redis", "category": "Database", "baseUrl": "https://api.upstash.com/", "authType": "apiKey"},
250
+ {"name": "Redis Cloud", "description": "Redis as a service", "category": "Database", "baseUrl": "https://api.redislabs.com/", "authType": "apiKey"},
251
+ {"name": "Xata", "description": "Serverless database", "category": "Database", "baseUrl": "https://api.xata.io/", "authType": "apiKey"},
252
+ {"name": "Turso", "description": "SQLite at the edge", "category": "Database", "baseUrl": "https://api.turso.tech/", "authType": "apiKey"},
253
+
254
+ # Developer Tools
255
+ {"name": "Raycast", "description": "Productivity launcher", "category": "Development", "baseUrl": "https://api.raycast.com/", "authType": "apiKey"},
256
+ {"name": "Alfred", "description": "Mac productivity", "category": "Development", "baseUrl": "https://www.alfredapp.com/api/", "authType": "apiKey"},
257
+ {"name": "Fig", "description": "Terminal autocomplete", "category": "Development", "baseUrl": "https://api.fig.io/", "authType": "apiKey"},
258
+ {"name": "Warp", "description": "Modern terminal", "category": "Development", "baseUrl": "https://api.warp.dev/", "authType": "apiKey"},
259
+ {"name": "Codeium", "description": "AI code completion", "category": "AI/ML", "baseUrl": "https://api.codeium.com/", "authType": "apiKey"},
260
+ {"name": "Tabnine", "description": "AI assistant", "category": "AI/ML", "baseUrl": "https://api.tabnine.com/", "authType": "apiKey"},
261
+ {"name": "Sourcegraph", "description": "Code search", "category": "Development", "baseUrl": "https://sourcegraph.com/api/", "authType": "apiKey"},
262
+ {"name": "Grep.app", "description": "Code search", "category": "Development", "baseUrl": "https://grep.app/api/", "authType": "none"},
263
+
264
+ # DNS & Domains
265
+ {"name": "Cloudflare DNS", "description": "DNS management", "category": "Infrastructure", "baseUrl": "https://api.cloudflare.com/client/v4/zones/", "authType": "apiKey"},
266
+ {"name": "Route 53", "description": "AWS DNS", "category": "Infrastructure", "baseUrl": "https://route53.amazonaws.com/", "authType": "apiKey"},
267
+ {"name": "DNSimple", "description": "Domain management", "category": "Infrastructure", "baseUrl": "https://api.dnsimple.com/", "authType": "bearer"},
268
+ {"name": "Name.com", "description": "Domain registrar", "category": "Infrastructure", "baseUrl": "https://api.name.com/", "authType": "basic"},
269
+ {"name": "Namecheap", "description": "Domain registrar", "category": "Infrastructure", "baseUrl": "https://api.namecheap.com/", "authType": "apiKey"},
270
+ {"name": "GoDaddy", "description": "Domain registrar", "category": "Infrastructure", "baseUrl": "https://api.godaddy.com/", "authType": "apiKey"},
271
+ {"name": "Gandi", "description": "Domain registrar", "category": "Infrastructure", "baseUrl": "https://api.gandi.net/", "authType": "apiKey"},
272
+ {"name": "Porkbun", "description": "Domain registrar", "category": "Infrastructure", "baseUrl": "https://porkbun.com/api/", "authType": "apiKey"},
273
+
274
+ # Document Processing
275
+ {"name": "DocSpring", "description": "PDF generation", "category": "Documents", "baseUrl": "https://api.docspring.com/", "authType": "basic"},
276
+ {"name": "PDF.co", "description": "PDF tools", "category": "Documents", "baseUrl": "https://api.pdf.co/", "authType": "apiKey"},
277
+ {"name": "PSPDFKit", "description": "PDF SDK", "category": "Documents", "baseUrl": "https://api.pspdfkit.com/", "authType": "apiKey"},
278
+ {"name": "Anvil", "description": "Paperwork automation", "category": "Documents", "baseUrl": "https://api.useanvil.com/", "authType": "apiKey"},
279
+ {"name": "Documentero", "description": "Document generation", "category": "Documents", "baseUrl": "https://app.documentero.com/api/", "authType": "apiKey"},
280
+ {"name": "Carbone", "description": "Document generation", "category": "Documents", "baseUrl": "https://api.carbone.io/", "authType": "apiKey"},
281
+
282
+ # E-commerce Platforms
283
+ {"name": "Shopify Admin", "description": "Store management", "category": "Commerce", "baseUrl": "https://mystore.myshopify.com/admin/api/", "authType": "apiKey"},
284
+ {"name": "BigCommerce", "description": "E-commerce platform", "category": "Commerce", "baseUrl": "https://api.bigcommerce.com/", "authType": "oauth"},
285
+ {"name": "WooCommerce", "description": "WordPress commerce", "category": "Commerce", "baseUrl": "https://yourstore.com/wp-json/wc/v3/", "authType": "basic"},
286
+ {"name": "Magento", "description": "E-commerce platform", "category": "Commerce", "baseUrl": "https://yourstore.com/rest/V1/", "authType": "oauth"},
287
+ {"name": "PrestaShop", "description": "E-commerce solution", "category": "Commerce", "baseUrl": "https://yourstore.com/api/", "authType": "apiKey"},
288
+ {"name": "Saleor", "description": "Headless commerce", "category": "Commerce", "baseUrl": "https://api.saleor.io/", "authType": "jwt"},
289
+ {"name": "Medusa", "description": "Open source commerce", "category": "Commerce", "baseUrl": "https://api.medusajs.com/", "authType": "apiKey"},
290
+ {"name": "Swell", "description": "Headless commerce", "category": "Commerce", "baseUrl": "https://api.swell.store/", "authType": "basic"},
291
+
292
+ # Education
293
+ {"name": "Canvas LMS", "description": "Learning management", "category": "Education", "baseUrl": "https://yourschool.instructure.com/api/", "authType": "oauth"},
294
+ {"name": "Blackboard", "description": "Learning management", "category": "Education", "baseUrl": "https://developer.blackboard.com/", "authType": "oauth"},
295
+ {"name": "Moodle", "description": "Open source LMS", "category": "Education", "baseUrl": "https://yourmoodle.com/webservice/rest/", "authType": "apiKey"},
296
+ {"name": "Coursera", "description": "Online courses", "category": "Education", "baseUrl": "https://api.coursera.org/", "authType": "oauth"},
297
+ {"name": "Udemy", "description": "Online courses", "category": "Education", "baseUrl": "https://www.udemy.com/api-2.0/", "authType": "basic"},
298
+ {"name": "edX", "description": "Online education", "category": "Education", "baseUrl": "https://courses.edx.org/api/", "authType": "oauth"},
299
+ {"name": "Teachable", "description": "Course platform", "category": "Education", "baseUrl": "https://yourschool.teachable.com/api/", "authType": "apiKey"},
300
+ {"name": "Thinkific", "description": "Course platform", "category": "Education", "baseUrl": "https://api.thinkific.com/", "authType": "apiKey"},
301
+ {"name": "Kajabi", "description": "Course platform", "category": "Education", "baseUrl": "https://kajabi.com/api/", "authType": "oauth"},
302
+ {"name": "Podia", "description": "Digital products", "category": "Education", "baseUrl": "https://api.podia.com/", "authType": "apiKey"},
303
+
304
+ # Email Marketing
305
+ {"name": "ConvertKit", "description": "Creator marketing", "category": "Marketing", "baseUrl": "https://api.convertkit.com/", "authType": "apiKey"},
306
+ {"name": "Drip", "description": "E-commerce CRM", "category": "Marketing", "baseUrl": "https://api.getdrip.com/", "authType": "apiKey"},
307
+ {"name": "ActiveCampaign", "description": "Email automation", "category": "Marketing", "baseUrl": "https://yoursite.api-us1.com/", "authType": "apiKey"},
308
+ {"name": "Klaviyo", "description": "E-commerce marketing", "category": "Marketing", "baseUrl": "https://a.klaviyo.com/api/", "authType": "apiKey"},
309
+ {"name": "Customer.io", "description": "Messaging automation", "category": "Marketing", "baseUrl": "https://api.customer.io/", "authType": "basic"},
310
+ {"name": "Braze", "description": "Customer engagement", "category": "Marketing", "baseUrl": "https://rest.iad-01.braze.com/", "authType": "apiKey"},
311
+ {"name": "Iterable", "description": "Cross-channel marketing", "category": "Marketing", "baseUrl": "https://api.iterable.com/", "authType": "apiKey"},
312
+ {"name": "Vero", "description": "Event-driven email", "category": "Marketing", "baseUrl": "https://api.getvero.com/", "authType": "apiKey"},
313
+
314
+ # Email Transactional
315
+ {"name": "Amazon SES", "description": "Email sending service", "category": "Communication", "baseUrl": "https://email.us-east-1.amazonaws.com/", "authType": "apiKey"},
316
+ {"name": "Mandrill", "description": "Mailchimp transactional", "category": "Communication", "baseUrl": "https://mandrillapp.com/api/", "authType": "apiKey"},
317
+ {"name": "SparkPost", "description": "Email delivery", "category": "Communication", "baseUrl": "https://api.sparkpost.com/", "authType": "apiKey"},
318
+ {"name": "Mailjet", "description": "Email service", "category": "Communication", "baseUrl": "https://api.mailjet.com/", "authType": "basic"},
319
+ {"name": "Mailersend", "description": "Transactional email", "category": "Communication", "baseUrl": "https://api.mailersend.com/", "authType": "bearer"},
320
+ {"name": "SMTP2GO", "description": "Email delivery", "category": "Communication", "baseUrl": "https://api.smtp2go.com/", "authType": "apiKey"},
321
+ {"name": "Elastic Email", "description": "Email API", "category": "Communication", "baseUrl": "https://api.elasticemail.com/", "authType": "apiKey"},
322
+
323
+ # Enterprise Software
324
+ {"name": "ServiceNow", "description": "IT service management", "category": "Enterprise", "baseUrl": "https://instance.service-now.com/api/", "authType": "basic"},
325
+ {"name": "SAP", "description": "Enterprise software", "category": "Enterprise", "baseUrl": "https://api.sap.com/", "authType": "oauth"},
326
+ {"name": "Oracle Cloud", "description": "Enterprise cloud", "category": "Enterprise", "baseUrl": "https://api.oracle.com/", "authType": "oauth"},
327
+ {"name": "Workday", "description": "HR and finance", "category": "Enterprise", "baseUrl": "https://api.workday.com/", "authType": "oauth"},
328
+ {"name": "Microsoft Dynamics", "description": "Business applications", "category": "Enterprise", "baseUrl": "https://api.dynamics.com/", "authType": "oauth"},
329
+ {"name": "NetSuite", "description": "ERP system", "category": "Enterprise", "baseUrl": "https://api.netsuite.com/", "authType": "oauth"},
330
+
331
+ # Feature Flags
332
+ {"name": "LaunchDarkly", "description": "Feature management", "category": "Development", "baseUrl": "https://app.launchdarkly.com/api/", "authType": "apiKey"},
333
+ {"name": "Split", "description": "Feature delivery", "category": "Development", "baseUrl": "https://api.split.io/", "authType": "apiKey"},
334
+ {"name": "Optimizely", "description": "Experimentation", "category": "Development", "baseUrl": "https://api.optimizely.com/", "authType": "bearer"},
335
+ {"name": "ConfigCat", "description": "Feature flags", "category": "Development", "baseUrl": "https://api.configcat.com/", "authType": "basic"},
336
+ {"name": "Unleash", "description": "Open source feature flags", "category": "Development", "baseUrl": "https://api.getunleash.io/", "authType": "apiKey"},
337
+ {"name": "GrowthBook", "description": "Feature flags and A/B tests", "category": "Development", "baseUrl": "https://api.growthbook.io/", "authType": "apiKey"},
338
+
339
+ # Fintech Infrastructure
340
+ {"name": "Dwolla", "description": "ACH payments", "category": "Finance", "baseUrl": "https://api.dwolla.com/", "authType": "oauth"},
341
+ {"name": "Modern Treasury", "description": "Payment operations", "category": "Finance", "baseUrl": "https://api.moderntreasury.com/", "authType": "basic"},
342
+ {"name": "Lithic", "description": "Card issuing", "category": "Finance", "baseUrl": "https://api.lithic.com/", "authType": "apiKey"},
343
+ {"name": "Increase", "description": "Banking infrastructure", "category": "Finance", "baseUrl": "https://api.increase.com/", "authType": "bearer"},
344
+ {"name": "Unit", "description": "Banking as a service", "category": "Finance", "baseUrl": "https://api.s.unit.sh/", "authType": "bearer"},
345
+ {"name": "Synapse", "description": "Financial infrastructure", "category": "Finance", "baseUrl": "https://api.synapsefi.com/", "authType": "oauth"},
346
+ {"name": "Treasury Prime", "description": "Banking API", "category": "Finance", "baseUrl": "https://api.treasuryprime.com/", "authType": "bearer"},
347
+ {"name": "Column", "description": "Banking infrastructure", "category": "Finance", "baseUrl": "https://api.column.com/", "authType": "bearer"},
348
+ ]
349
+
350
+ def main():
351
+ print("šŸ¦ž APIClaw Night Expansion 03:00 - Batch 3 (apis.guru)")
352
+ print("=" * 50)
353
+
354
+ registry = load_registry()
355
+ current_count = registry.get("count", 0)
356
+ apis = registry.get("apis", [])
357
+
358
+ print(f"Current count: {current_count}")
359
+
360
+ existing_names = set(api.get("name", "").lower() for api in apis)
361
+
362
+ added = 0
363
+ for new_api in BATCH3_APIS:
364
+ if new_api["name"].lower() not in existing_names:
365
+ api_entry = {
366
+ "id": generate_id(new_api["name"], new_api["category"]),
367
+ "name": new_api["name"],
368
+ "description": new_api["description"],
369
+ "category": new_api["category"],
370
+ "baseUrl": new_api["baseUrl"],
371
+ "authType": new_api["authType"],
372
+ "pricingModel": "freemium",
373
+ "source": "night-expansion-03-batch3-apisguru"
374
+ }
375
+ apis.append(api_entry)
376
+ existing_names.add(new_api["name"].lower())
377
+ added += 1
378
+
379
+ registry["apis"] = apis
380
+ registry["count"] = len(apis)
381
+ registry["lastUpdated"] = datetime.now().isoformat()
382
+
383
+ save_registry(registry)
384
+
385
+ print(f"āœ… Added: {added} APIs")
386
+ print(f"šŸ“Š New total: {len(apis)}")
387
+
388
+ return {"before": current_count, "after": len(apis), "added": added}
389
+
390
+ if __name__ == "__main__":
391
+ stats = main()
392
+ print(f"\nšŸ“ˆ Progress: {stats['before']} → {stats['after']} (+{stats['added']})")