@nordsym/apiclaw 1.2.2 → 1.2.3

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 (77) hide show
  1. package/AGENTS.md +50 -33
  2. package/README.md +22 -12
  3. package/SOUL.md +60 -19
  4. package/STATUS.md +91 -169
  5. package/convex/_generated/api.d.ts +6 -0
  6. package/convex/directCall.ts +598 -0
  7. package/convex/providers.ts +341 -26
  8. package/convex/schema.ts +87 -0
  9. package/convex/usage.ts +260 -0
  10. package/convex/waitlist.ts +55 -0
  11. package/data/combined-02-26.json +22102 -0
  12. package/data/night-expansion-02-26-06-batch2.json +1898 -0
  13. package/data/night-expansion-02-26-06-batch3.json +1410 -0
  14. package/data/night-expansion-02-26-06.json +3146 -0
  15. package/data/night-expansion-02-26-full.json +9726 -0
  16. package/data/night-expansion-02-26-v2.json +330 -0
  17. package/data/night-expansion-02-26.json +171 -0
  18. package/dist/crypto.d.ts +7 -0
  19. package/dist/crypto.d.ts.map +1 -0
  20. package/dist/crypto.js +67 -0
  21. package/dist/crypto.js.map +1 -0
  22. package/dist/execute-dynamic.d.ts +116 -0
  23. package/dist/execute-dynamic.d.ts.map +1 -0
  24. package/dist/execute-dynamic.js +456 -0
  25. package/dist/execute-dynamic.js.map +1 -0
  26. package/dist/execute.d.ts +2 -1
  27. package/dist/execute.d.ts.map +1 -1
  28. package/dist/execute.js +35 -5
  29. package/dist/execute.js.map +1 -1
  30. package/dist/index.js +33 -4
  31. package/dist/index.js.map +1 -1
  32. package/dist/registry/apis.json +2081 -3
  33. package/docs/PRD-customer-key-passthrough.md +184 -0
  34. package/landing/public/badges/available-on-apiclaw.svg +14 -0
  35. package/landing/scripts/generate-stats.js +75 -4
  36. package/landing/src/app/admin/page.tsx +1 -1
  37. package/landing/src/app/api/auth/magic-link/route.ts +1 -1
  38. package/landing/src/app/api/auth/session/route.ts +1 -1
  39. package/landing/src/app/api/auth/verify/route.ts +1 -1
  40. package/landing/src/app/api/og/route.tsx +5 -3
  41. package/landing/src/app/docs/page.tsx +5 -4
  42. package/landing/src/app/earn/page.tsx +14 -11
  43. package/landing/src/app/globals.css +16 -15
  44. package/landing/src/app/layout.tsx +2 -2
  45. package/landing/src/app/page.tsx +425 -254
  46. package/landing/src/app/providers/dashboard/[apiId]/actions/[actionId]/edit/page.tsx +600 -0
  47. package/landing/src/app/providers/dashboard/[apiId]/actions/new/page.tsx +583 -0
  48. package/landing/src/app/providers/dashboard/[apiId]/actions/page.tsx +301 -0
  49. package/landing/src/app/providers/dashboard/[apiId]/direct-call/page.tsx +659 -0
  50. package/landing/src/app/providers/dashboard/[apiId]/page.tsx +381 -0
  51. package/landing/src/app/providers/dashboard/[apiId]/test/page.tsx +418 -0
  52. package/landing/src/app/providers/dashboard/layout.tsx +292 -0
  53. package/landing/src/app/providers/dashboard/page.tsx +353 -290
  54. package/landing/src/app/providers/register/page.tsx +87 -10
  55. package/landing/src/components/AiClientDropdown.tsx +85 -0
  56. package/landing/src/components/ConfigHelperModal.tsx +113 -0
  57. package/landing/src/components/HeroTabs.tsx +187 -0
  58. package/landing/src/components/ShareIntegrationModal.tsx +198 -0
  59. package/landing/src/hooks/useDashboardData.ts +53 -1
  60. package/landing/src/lib/apis.json +46554 -174
  61. package/landing/src/lib/convex-client.ts +22 -3
  62. package/landing/src/lib/stats.json +4 -4
  63. package/landing/tsconfig.tsbuildinfo +1 -1
  64. package/night-expansion-02-26-06-batch2.py +368 -0
  65. package/night-expansion-02-26-06-batch3.py +299 -0
  66. package/night-expansion-02-26-06.py +756 -0
  67. package/package.json +1 -1
  68. package/scripts/bulk-add-public-apis-v2.py +418 -0
  69. package/scripts/night-expansion-02-26-v2.py +296 -0
  70. package/scripts/night-expansion-02-26.py +890 -0
  71. package/scripts/seed-complete-api.js +181 -0
  72. package/scripts/seed-demo-api.sh +44 -0
  73. package/src/crypto.ts +75 -0
  74. package/src/execute-dynamic.ts +589 -0
  75. package/src/execute.ts +41 -5
  76. package/src/index.ts +38 -4
  77. package/src/registry/apis.json +2081 -3
@@ -0,0 +1,756 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ APIClaw Night Expansion 2026-02-26 06:00
4
+ Sources: TonnyL/Awesome_APIs + n0shake/Public-APIs (parsed from markdown)
5
+ Target: 1000+ new APIs
6
+ """
7
+
8
+ import json
9
+ import re
10
+ import hashlib
11
+ from pathlib import Path
12
+
13
+ # Load existing APIs to avoid duplicates
14
+ existing_file = Path("/Users/gustavhemmingsson/Projects/apiclaw/data/combined-02-25.json")
15
+ night_26_file = Path("/Users/gustavhemmingsson/Projects/apiclaw/data/night-expansion-02-26-full.json")
16
+ night_26_v2_file = Path("/Users/gustavhemmingsson/Projects/apiclaw/data/night-expansion-02-26-v2.json")
17
+
18
+ existing_ids = set()
19
+ if existing_file.exists():
20
+ with open(existing_file) as f:
21
+ for api in json.load(f):
22
+ existing_ids.add(api.get('id', ''))
23
+ if night_26_file.exists():
24
+ with open(night_26_file) as f:
25
+ for api in json.load(f):
26
+ existing_ids.add(api.get('id', ''))
27
+ if night_26_v2_file.exists():
28
+ with open(night_26_v2_file) as f:
29
+ for api in json.load(f):
30
+ existing_ids.add(api.get('id', ''))
31
+
32
+ print(f"Loaded {len(existing_ids)} existing API IDs")
33
+
34
+ def make_id(name):
35
+ """Generate a clean ID from name"""
36
+ slug = re.sub(r'[^a-z0-9]+', '-', name.lower()).strip('-')
37
+ return slug[:50]
38
+
39
+ def parse_tonny_markdown():
40
+ """Parse TonnyL/Awesome_APIs markdown format"""
41
+ apis = []
42
+
43
+ # Embedded data from TonnyL repo (categories and APIs)
44
+ tonny_apis = [
45
+ # Anime
46
+ {"name": "AcgClub", "desc": "ACG-related aggregation services", "cat": "Entertainment", "url": "https://github.com/Rabtman/AcgClub/wiki/", "auth": "None"},
47
+ {"name": "AniList", "desc": "Access to 500k+ anime and manga entries", "cat": "Entertainment", "url": "https://github.com/AniList/ApiV2-GraphQL-Docs", "auth": "OAuth"},
48
+ {"name": "Kitsu", "desc": "Modern anime discovery platform", "cat": "Entertainment", "url": "https://kitsu.docs.apiary.io/", "auth": "OAuth"},
49
+ {"name": "hitokoto", "desc": "One-word service from anime", "cat": "Entertainment", "url": "https://hitokoto.cn/api", "auth": "None"},
50
+
51
+ # Blogging
52
+ {"name": "Blogger", "desc": "Create and manage blog posts", "cat": "Content", "url": "https://developers.google.com/blogger/", "auth": "OAuth"},
53
+ {"name": "Medium", "desc": "Access Medium.com data", "cat": "Content", "url": "https://github.com/Medium/medium-api-docs", "auth": "OAuth"},
54
+ {"name": "Weebly Cloud", "desc": "Website builder API", "cat": "Development", "url": "https://cloud-developer.weebly.com/", "auth": "apiKey"},
55
+ {"name": "WordPress", "desc": "WordPress APIs", "cat": "Content", "url": "https://codex.wordpress.org/WordPress_APIs", "auth": "OAuth"},
56
+ {"name": "Telegraph", "desc": "Telegram's publishing service", "cat": "Content", "url": "http://telegra.ph/api", "auth": "None"},
57
+
58
+ # Books
59
+ {"name": "An API Of Ice And Fire", "desc": "Game of Thrones universe data", "cat": "Entertainment", "url": "https://anapioficeandfire.com/", "auth": "None"},
60
+ {"name": "Open Library Books", "desc": "Open editable library catalog", "cat": "Books", "url": "https://openlibrary.org/developers/api", "auth": "None"},
61
+ {"name": "NYPL Digital Collections", "desc": "New York Public Library digital collections", "cat": "Books", "url": "http://api.repo.nypl.org/", "auth": "apiKey"},
62
+ {"name": "Bookshare", "desc": "Books for print disabilities", "cat": "Books", "url": "http://developer.bookshare.org/", "auth": "apiKey"},
63
+
64
+ # Business
65
+ {"name": "Airtable", "desc": "Database and spreadsheet hybrid", "cat": "Business", "url": "https://airtable.com/api", "auth": "apiKey"},
66
+ {"name": "Buffer", "desc": "Social media management", "cat": "Social", "url": "https://buffer.com/developers/api", "auth": "OAuth"},
67
+ {"name": "Concur Labs", "desc": "Travel and expense management", "cat": "Business", "url": "https://developer.concur.com/api-reference/", "auth": "OAuth"},
68
+ {"name": "JotForm", "desc": "Form builder API", "cat": "Business", "url": "http://api.jotform.com/docs/", "auth": "apiKey"},
69
+ {"name": "MailChimp", "desc": "Email marketing platform", "cat": "Marketing", "url": "https://developer.mailchimp.com/", "auth": "apiKey"},
70
+ {"name": "Quip", "desc": "Collaborative documents", "cat": "Business", "url": "https://quip.com/api/", "auth": "OAuth"},
71
+ {"name": "Salesforce", "desc": "CRM platform API", "cat": "Business", "url": "https://developer.salesforce.com/page/Salesforce_APIs", "auth": "OAuth"},
72
+ {"name": "Square", "desc": "Payment processing", "cat": "Finance", "url": "https://connect.squareup.com/", "auth": "OAuth"},
73
+
74
+ # Calendar
75
+ {"name": "Google Calendar", "desc": "Calendar integration", "cat": "Productivity", "url": "https://developers.google.com/google-apps/calendar/", "auth": "OAuth"},
76
+ {"name": "Outlook Calendar", "desc": "Microsoft calendar API", "cat": "Productivity", "url": "https://docs.microsoft.com/en-us/graph/api/resources/calendar", "auth": "OAuth"},
77
+
78
+ # Carsharing
79
+ {"name": "Lyft", "desc": "Rideshare API", "cat": "Transportation", "url": "https://www.lyft.com/developers", "auth": "OAuth"},
80
+ {"name": "Uber", "desc": "Rideshare and delivery API", "cat": "Transportation", "url": "https://developer.uber.com/", "auth": "OAuth"},
81
+
82
+ # Cloud
83
+ {"name": "Google Cloud Platform", "desc": "Google cloud services", "cat": "Cloud", "url": "https://cloud.google.com/apis/docs/overview", "auth": "OAuth"},
84
+ {"name": "Oracle Cloud", "desc": "Oracle cloud infrastructure", "cat": "Cloud", "url": "https://cloud.oracle.com/home", "auth": "apiKey"},
85
+ {"name": "Tencent Cloud", "desc": "Tencent cloud services", "cat": "Cloud", "url": "https://cloud.tencent.com/document/api", "auth": "apiKey"},
86
+
87
+ # Cloud Storage
88
+ {"name": "Amazon Cloud Drive", "desc": "Amazon cloud storage", "cat": "Cloud", "url": "https://developer.amazon.com/amazon-drive", "auth": "OAuth"},
89
+ {"name": "Box", "desc": "Enterprise file sharing", "cat": "Cloud", "url": "https://developer.box.com/", "auth": "OAuth"},
90
+ {"name": "Digital Ocean Spaces", "desc": "Object storage", "cat": "Cloud", "url": "https://developers.digitalocean.com/", "auth": "apiKey"},
91
+ {"name": "Document Cloud", "desc": "Document storage and analysis", "cat": "Documents", "url": "http://www.documentcloud.org/help/api", "auth": "apiKey"},
92
+ {"name": "Dropbox", "desc": "Cloud file storage", "cat": "Cloud", "url": "https://www.dropbox.com/developers", "auth": "OAuth"},
93
+ {"name": "Google Drive", "desc": "Google cloud storage", "cat": "Cloud", "url": "https://developers.google.com/drive/", "auth": "OAuth"},
94
+ {"name": "OneDrive", "desc": "Microsoft cloud storage", "cat": "Cloud", "url": "https://dev.onedrive.com/", "auth": "OAuth"},
95
+
96
+ # Delivery Tracking
97
+ {"name": "AfterShip", "desc": "Shipment tracking for 200+ couriers", "cat": "Shipping", "url": "https://docs.aftership.com/api/", "auth": "apiKey"},
98
+ {"name": "Aramex", "desc": "Global shipping provider", "cat": "Shipping", "url": "https://www.aramex.com/developers/aramex-apis", "auth": "apiKey"},
99
+ {"name": "Canada Post", "desc": "Canadian postal service", "cat": "Shipping", "url": "http://www.canadapost.ca/cpo/mc/business/productsservices/developers/", "auth": "apiKey"},
100
+ {"name": "DHL", "desc": "DHL shipping services", "cat": "Shipping", "url": "http://www.dhl-usa.com/en/express/resource_center/integrated_shipping_solutions.html", "auth": "apiKey"},
101
+ {"name": "FedEx", "desc": "FedEx shipping integration", "cat": "Shipping", "url": "https://www.fedex.com/us/developer/web-services/index.html", "auth": "apiKey"},
102
+ {"name": "UPS", "desc": "UPS shipping functionalities", "cat": "Shipping", "url": "http://www.ups.com/content/us/en/resources/techsupport/developercenter.html", "auth": "apiKey"},
103
+
104
+ # Design
105
+ {"name": "Dribbble", "desc": "Designer portfolio platform", "cat": "Design", "url": "http://developer.dribbble.com/v1/", "auth": "OAuth"},
106
+ {"name": "Behance", "desc": "Creative portfolio platform", "cat": "Design", "url": "https://www.behance.net/dev/api/endpoints/", "auth": "apiKey"},
107
+ {"name": "deviantART", "desc": "Art community platform", "cat": "Art", "url": "https://www.deviantart.com/developers/", "auth": "OAuth"},
108
+
109
+ # Development
110
+ {"name": "ARTIK Cloud", "desc": "IoT cloud platform", "cat": "IoT", "url": "https://developer.artik.cloud/documentation/api-reference/", "auth": "OAuth"},
111
+ {"name": "AT&T M2X", "desc": "IoT time-series data", "cat": "IoT", "url": "https://m2x.att.com/developer/documentation/v2/overview", "auth": "apiKey"},
112
+ {"name": "Bitbucket", "desc": "Git repository hosting", "cat": "Development", "url": "https://developer.atlassian.com/cloud/bitbucket/", "auth": "OAuth"},
113
+ {"name": "bitly", "desc": "URL shortening", "cat": "Tools", "url": "https://dev.bitly.com/", "auth": "OAuth"},
114
+ {"name": "Buddy", "desc": "CI/CD platform", "cat": "Development", "url": "https://buddy.works/api/reference/getting-started/overview", "auth": "OAuth"},
115
+ {"name": "CircleCI", "desc": "CI/CD platform", "cat": "Development", "url": "https://circleci.com/docs/api/v1-reference/", "auth": "apiKey"},
116
+ {"name": "GitHub", "desc": "Software development platform", "cat": "Development", "url": "https://developer.github.com/v3/", "auth": "OAuth"},
117
+ {"name": "GitLab", "desc": "DevOps platform", "cat": "Development", "url": "https://docs.gitlab.com/ee/api/README.html", "auth": "OAuth"},
118
+ {"name": "Gitter", "desc": "Chat for GitHub", "cat": "Communication", "url": "https://developer.gitter.im/docs/welcome", "auth": "OAuth"},
119
+ {"name": "Google Play Developer", "desc": "Android app publishing", "cat": "Development", "url": "https://developers.google.com/android-publisher/", "auth": "OAuth"},
120
+ {"name": "IPInfo.io", "desc": "IP geolocation", "cat": "Tools", "url": "https://ipinfo.io/developers", "auth": "apiKey"},
121
+ {"name": "MAC Address Vendor", "desc": "MAC address lookup", "cat": "Tools", "url": "https://macaddress.io/api-documentation", "auth": "apiKey"},
122
+ {"name": "openHAB", "desc": "Home automation", "cat": "IoT", "url": "https://github.com/openhab/openhab1-addons/wiki/REST-API", "auth": "None"},
123
+ {"name": "Particle", "desc": "IoT platform", "cat": "IoT", "url": "https://docs.particle.io/reference/api/", "auth": "OAuth"},
124
+ {"name": "ProxyCrawl", "desc": "Web scraping proxy", "cat": "Tools", "url": "https://proxycrawl.com", "auth": "apiKey"},
125
+ {"name": "QR Code Generator", "desc": "Generate QR codes", "cat": "Tools", "url": "http://goqr.me/api/", "auth": "None"},
126
+ {"name": "Scraper API", "desc": "Web scraping service", "cat": "Tools", "url": "https://www.scraperapi.com/documentation", "auth": "apiKey"},
127
+ {"name": "StackExchange", "desc": "Q&A network", "cat": "Development", "url": "https://api.stackexchange.com/docs", "auth": "OAuth"},
128
+ {"name": "TravisCI", "desc": "CI platform", "cat": "Development", "url": "https://docs.travis-ci.com/api/", "auth": "apiKey"},
129
+ {"name": "W3C", "desc": "Web standards data", "cat": "Development", "url": "https://github.com/w3c/w3c-api", "auth": "None"},
130
+ {"name": "ZenHub", "desc": "Project management for GitHub", "cat": "Development", "url": "https://github.com/ZenHubIO/API", "auth": "apiKey"},
131
+
132
+ # Email
133
+ {"name": "Context.IO", "desc": "Email data API", "cat": "Email", "url": "http://context.io/", "auth": "OAuth"},
134
+ {"name": "Gmail API", "desc": "Google email API", "cat": "Email", "url": "https://developers.google.com/gmail/api/", "auth": "OAuth"},
135
+ {"name": "Inbox by Nylas", "desc": "Email infrastructure", "cat": "Email", "url": "https://www.nylas.com/", "auth": "OAuth"},
136
+ {"name": "Mandrill", "desc": "Transactional email", "cat": "Email", "url": "https://mandrillapp.com/api/docs/", "auth": "apiKey"},
137
+ {"name": "Outlook Mail", "desc": "Microsoft email API", "cat": "Email", "url": "https://docs.microsoft.com/en-us/graph/api/resources/mail-api-overview", "auth": "OAuth"},
138
+
139
+ # Fitness & Wearables
140
+ {"name": "Fitbit", "desc": "Fitness tracker data", "cat": "Health", "url": "https://dev.fitbit.com/", "auth": "OAuth"},
141
+ {"name": "Jawbone UP", "desc": "Activity tracking", "cat": "Health", "url": "https://jawbone.com/up/developer", "auth": "OAuth"},
142
+ {"name": "Misfit", "desc": "Wearable activity tracking", "cat": "Health", "url": "https://build.misfit.com/", "auth": "OAuth"},
143
+ {"name": "Nike+", "desc": "Nike fitness data", "cat": "Health", "url": "https://developer.nike.com/", "auth": "OAuth"},
144
+ {"name": "Strava", "desc": "Athletic activities", "cat": "Sports", "url": "https://strava.github.io/api/", "auth": "OAuth"},
145
+ {"name": "Withings", "desc": "Health device data", "cat": "Health", "url": "http://www.withings.com/us/en/developers", "auth": "OAuth"},
146
+
147
+ # Forex & Currencies
148
+ {"name": "1Forge", "desc": "Forex and crypto quotes", "cat": "Finance", "url": "https://1forge.com/", "auth": "apiKey"},
149
+ {"name": "CurrencyScoop", "desc": "Currency rates API", "cat": "Finance", "url": "https://currencyscoop.com/", "auth": "apiKey"},
150
+
151
+ # Games
152
+ {"name": "Battle.net", "desc": "Blizzard game data", "cat": "Games", "url": "https://dev.battle.net/", "auth": "OAuth"},
153
+ {"name": "Clash of Clans", "desc": "Clash of Clans game data", "cat": "Games", "url": "https://developer.clashofclans.com/", "auth": "apiKey"},
154
+ {"name": "EVE Online", "desc": "EVE Online game data", "cat": "Games", "url": "https://developers.eveonline.com/", "auth": "OAuth"},
155
+ {"name": "Facebook Games", "desc": "Facebook gaming services", "cat": "Games", "url": "https://developers.facebook.com/docs/games", "auth": "OAuth"},
156
+ {"name": "Google Play Games", "desc": "Google gaming services", "cat": "Games", "url": "https://developers.google.com/games/", "auth": "OAuth"},
157
+ {"name": "Riot Games", "desc": "League of Legends data", "cat": "Games", "url": "https://developer.riotgames.com/", "auth": "apiKey"},
158
+ {"name": "Steam Web API", "desc": "Steam game data", "cat": "Games", "url": "https://steamcommunity.com/dev", "auth": "apiKey"},
159
+ {"name": "Giant Bomb", "desc": "Video game database", "cat": "Games", "url": "http://www.giantbomb.com/api/", "auth": "apiKey"},
160
+ {"name": "Guild Wars 2", "desc": "Guild Wars 2 game data", "cat": "Games", "url": "https://wiki.guildwars2.com/wiki/API:Main", "auth": "None"},
161
+
162
+ # IoT
163
+ {"name": "Automatic", "desc": "Connected car platform", "cat": "IoT", "url": "https://developer.automatic.com/", "auth": "OAuth"},
164
+ {"name": "Amazon Alexa", "desc": "Voice assistant API", "cat": "IoT", "url": "https://developer.amazon.com/alexa", "auth": "OAuth"},
165
+ {"name": "Google Assistant", "desc": "Google voice assistant", "cat": "IoT", "url": "https://developers.google.com/actions/", "auth": "OAuth"},
166
+ {"name": "Home8", "desc": "Smart home security", "cat": "IoT", "url": "https://developer.home8systems.com/", "auth": "apiKey"},
167
+ {"name": "Homey", "desc": "Smart home hub", "cat": "IoT", "url": "https://developers.athom.com/api/", "auth": "OAuth"},
168
+ {"name": "LIFX", "desc": "Smart lighting", "cat": "IoT", "url": "https://api.developer.lifx.com/", "auth": "OAuth"},
169
+ {"name": "Philips Hue", "desc": "Smart lighting system", "cat": "IoT", "url": "https://developers.meethue.com/", "auth": "OAuth"},
170
+ {"name": "SmartThings", "desc": "Smart home platform", "cat": "IoT", "url": "https://developer-preview.smartthings.com/", "auth": "OAuth"},
171
+ {"name": "Yeelight", "desc": "Smart LED products", "cat": "IoT", "url": "http://www.yeelight.com/en_US/developer", "auth": "None"},
172
+
173
+ # Machine Learning
174
+ {"name": "Amazon ML", "desc": "AWS machine learning", "cat": "AI", "url": "https://aws.amazon.com/machine-learning/", "auth": "apiKey"},
175
+ {"name": "BigML", "desc": "ML platform", "cat": "AI", "url": "https://bigml.com/api", "auth": "apiKey"},
176
+ {"name": "Diffbot", "desc": "AI data extraction", "cat": "AI", "url": "https://www.diffbot.com/dev/docs/", "auth": "apiKey"},
177
+ {"name": "Google Cloud Prediction", "desc": "ML prediction API", "cat": "AI", "url": "https://cloud.google.com/prediction/docs/", "auth": "OAuth"},
178
+ {"name": "IBM Watson", "desc": "AI and ML services", "cat": "AI", "url": "https://developer.ibm.com/watson/", "auth": "apiKey"},
179
+ {"name": "Azure ML", "desc": "Microsoft ML platform", "cat": "AI", "url": "https://azure.microsoft.com/en-us/services/cognitive-services/", "auth": "apiKey"},
180
+
181
+ # Maps
182
+ {"name": "Bing Maps", "desc": "Microsoft mapping", "cat": "Maps", "url": "https://www.microsoft.com/en-us/maps/", "auth": "apiKey"},
183
+ {"name": "Google Maps", "desc": "Google mapping services", "cat": "Maps", "url": "https://developers.google.com/maps/", "auth": "apiKey"},
184
+ {"name": "HERE Maps", "desc": "Location services", "cat": "Maps", "url": "https://developer.here.com/develop/rest-apis", "auth": "apiKey"},
185
+
186
+ # Messaging
187
+ {"name": "Cisco Spark", "desc": "Team collaboration", "cat": "Communication", "url": "https://developer.ciscospark.com/", "auth": "OAuth"},
188
+ {"name": "Fleep", "desc": "Team messaging", "cat": "Communication", "url": "https://fleep.io/fleepapi/", "auth": "apiKey"},
189
+ {"name": "GroupMe", "desc": "Group messaging", "cat": "Communication", "url": "https://dev.groupme.com/docs/v3", "auth": "apiKey"},
190
+ {"name": "LINE", "desc": "Messaging platform", "cat": "Communication", "url": "https://developers.line.me/", "auth": "OAuth"},
191
+ {"name": "MessageBird", "desc": "SMS and voice", "cat": "Communication", "url": "https://developers.messagebird.com/", "auth": "apiKey"},
192
+ {"name": "Slack", "desc": "Team collaboration", "cat": "Communication", "url": "https://api.slack.com/", "auth": "OAuth"},
193
+ {"name": "Telegram", "desc": "Messaging platform", "cat": "Communication", "url": "https://core.telegram.org/api", "auth": "apiKey"},
194
+
195
+ # Music
196
+ {"name": "Deezer", "desc": "Music streaming", "cat": "Music", "url": "https://developers.deezer.com/", "auth": "OAuth"},
197
+ {"name": "Last.fm", "desc": "Music discovery", "cat": "Music", "url": "http://www.last.fm/api", "auth": "apiKey"},
198
+ {"name": "MusicGraph", "desc": "Music knowledge engine", "cat": "Music", "url": "https://developer.musicgraph.com/", "auth": "apiKey"},
199
+ {"name": "Musixmatch", "desc": "Lyrics API", "cat": "Music", "url": "https://developer.musixmatch.com/", "auth": "apiKey"},
200
+ {"name": "SoundCloud", "desc": "Audio sharing", "cat": "Music", "url": "https://developers.soundcloud.com/", "auth": "OAuth"},
201
+ {"name": "Spotify", "desc": "Music streaming", "cat": "Music", "url": "https://developer.spotify.com/web-api/", "auth": "OAuth"},
202
+
203
+ # News
204
+ {"name": "feedly", "desc": "RSS aggregator", "cat": "News", "url": "https://developer.feedly.com/", "auth": "OAuth"},
205
+ {"name": "Genius", "desc": "Song lyrics and annotations", "cat": "Music", "url": "https://docs.genius.com/", "auth": "OAuth"},
206
+ {"name": "goodreads", "desc": "Book reviews", "cat": "Books", "url": "https://www.goodreads.com/api", "auth": "apiKey"},
207
+ {"name": "HackerNews", "desc": "Tech news", "cat": "News", "url": "https://github.com/HackerNews/API", "auth": "None"},
208
+ {"name": "Instapaper", "desc": "Read later service", "cat": "Productivity", "url": "https://www.instapaper.com/api", "auth": "OAuth"},
209
+ {"name": "Pocket", "desc": "Save for later", "cat": "Productivity", "url": "https://getpocket.com/developer/", "auth": "OAuth"},
210
+ {"name": "Product Hunt", "desc": "Product discovery", "cat": "Technology", "url": "https://api.producthunt.com/v1/docs", "auth": "OAuth"},
211
+ {"name": "NY Times", "desc": "News articles", "cat": "News", "url": "https://developer.nytimes.com/", "auth": "apiKey"},
212
+ {"name": "USA TODAY", "desc": "News API", "cat": "News", "url": "https://developer.usatoday.com/docs/", "auth": "apiKey"},
213
+
214
+ # Notes
215
+ {"name": "Evernote", "desc": "Note taking", "cat": "Productivity", "url": "https://dev.evernote.com/doc/", "auth": "OAuth"},
216
+ {"name": "OneNote", "desc": "Microsoft notes", "cat": "Productivity", "url": "https://docs.microsoft.com/en-us/graph/api/resources/onenote-api-overview", "auth": "OAuth"},
217
+
218
+ # Payment
219
+ {"name": "PayPal", "desc": "Online payments", "cat": "Finance", "url": "https://developer.paypal.com/docs/api/", "auth": "OAuth"},
220
+ {"name": "Paymill", "desc": "Payment gateway", "cat": "Finance", "url": "https://developers.paymill.com/", "auth": "apiKey"},
221
+ {"name": "WePay", "desc": "Payment platform", "cat": "Finance", "url": "https://www.wepay.com/", "auth": "OAuth"},
222
+
223
+ # Photography
224
+ {"name": "500px", "desc": "Photography community", "cat": "Photography", "url": "https://github.com/500px/api-documentation", "auth": "OAuth"},
225
+ {"name": "Giphy", "desc": "GIF library", "cat": "Media", "url": "https://developers.giphy.com/docs/", "auth": "apiKey"},
226
+ {"name": "Imgur", "desc": "Image hosting", "cat": "Media", "url": "https://api.imgur.com/", "auth": "OAuth"},
227
+ {"name": "Pixabay", "desc": "Free stock photos", "cat": "Photography", "url": "https://pixabay.com/api/docs/", "auth": "apiKey"},
228
+ {"name": "Unsplash", "desc": "High-quality photos", "cat": "Photography", "url": "https://unsplash.com/documentation", "auth": "apiKey"},
229
+
230
+ # Places
231
+ {"name": "Yelp", "desc": "Local business reviews", "cat": "Places", "url": "https://www.yelp.com/developers/documentation/v2/overview", "auth": "OAuth"},
232
+ {"name": "Zomato", "desc": "Restaurant information", "cat": "Food", "url": "https://developers.zomato.com/api", "auth": "apiKey"},
233
+
234
+ # Social
235
+ {"name": "Disqus", "desc": "Comment platform", "cat": "Social", "url": "https://disqus.com/api/docs/", "auth": "OAuth"},
236
+ {"name": "Facebook", "desc": "Social network", "cat": "Social", "url": "https://developers.facebook.com/docs/", "auth": "OAuth"},
237
+ {"name": "Flickr", "desc": "Photo sharing", "cat": "Photography", "url": "https://www.flickr.com/services/api/", "auth": "OAuth"},
238
+ {"name": "Foursquare", "desc": "Location platform", "cat": "Places", "url": "https://developer.foursquare.com/", "auth": "OAuth"},
239
+ {"name": "Instagram", "desc": "Photo sharing", "cat": "Social", "url": "https://www.instagram.com/developer/", "auth": "OAuth"},
240
+ {"name": "LinkedIn", "desc": "Professional network", "cat": "Social", "url": "https://developer.linkedin.com/", "auth": "OAuth"},
241
+ {"name": "Pinterest", "desc": "Visual discovery", "cat": "Social", "url": "https://developers.pinterest.com/", "auth": "OAuth"},
242
+ {"name": "Reddit", "desc": "Social news", "cat": "Social", "url": "https://www.reddit.com/dev/api/", "auth": "OAuth"},
243
+ {"name": "Tumblr", "desc": "Microblogging", "cat": "Social", "url": "https://www.tumblr.com/docs/en/api/v2", "auth": "OAuth"},
244
+ {"name": "Twitter", "desc": "Social network", "cat": "Social", "url": "https://dev.twitter.com/", "auth": "OAuth"},
245
+
246
+ # Shopping
247
+ {"name": "Amazon Product Advertising", "desc": "Amazon product data", "cat": "E-commerce", "url": "https://affiliate-program.amazon.com/", "auth": "apiKey"},
248
+ {"name": "Best Buy", "desc": "Electronics retailer", "cat": "E-commerce", "url": "https://developer.bestbuy.com/", "auth": "apiKey"},
249
+ {"name": "eBay", "desc": "Online marketplace", "cat": "E-commerce", "url": "https://go.developer.ebay.com/", "auth": "OAuth"},
250
+ {"name": "Home Depot", "desc": "Home improvement retailer", "cat": "E-commerce", "url": "https://developer.homedepot.com/", "auth": "apiKey"},
251
+ {"name": "Semantics3", "desc": "Product data API", "cat": "E-commerce", "url": "http://docs.semantics3.com/reference", "auth": "apiKey"},
252
+
253
+ # Teamwork
254
+ {"name": "Asana", "desc": "Project management", "cat": "Productivity", "url": "https://asana.com/guide/help/api/api", "auth": "OAuth"},
255
+ {"name": "join.me", "desc": "Online meetings", "cat": "Communication", "url": "https://developer.join.me/", "auth": "OAuth"},
256
+ {"name": "Teambition", "desc": "Project collaboration", "cat": "Productivity", "url": "https://www.teambition.com/developer/open-platform", "auth": "OAuth"},
257
+ {"name": "Trello", "desc": "Project management", "cat": "Productivity", "url": "https://developers.trello.com/", "auth": "OAuth"},
258
+
259
+ # Text Analysis
260
+ {"name": "Text Analytics API", "desc": "Microsoft NLP", "cat": "AI", "url": "https://azure.microsoft.com/en-us/services/cognitive-services/text-analytics/", "auth": "apiKey"},
261
+ {"name": "Watson NLU", "desc": "IBM NLP", "cat": "AI", "url": "https://cloud.ibm.com/docs/natural-language-understanding", "auth": "apiKey"},
262
+
263
+ # To-dos
264
+ {"name": "Beeminder", "desc": "Goal tracking", "cat": "Productivity", "url": "https://www.beeminder.com/api", "auth": "OAuth"},
265
+ {"name": "Todoist", "desc": "Task management", "cat": "Productivity", "url": "https://developer.todoist.com/", "auth": "OAuth"},
266
+ {"name": "Toodledo", "desc": "Task management", "cat": "Productivity", "url": "https://api.toodledo.com/3/", "auth": "OAuth"},
267
+
268
+ # Translation
269
+ {"name": "Google Translate", "desc": "Translation service", "cat": "Language", "url": "https://cloud.google.com/translate/docs/", "auth": "apiKey"},
270
+ {"name": "Microsoft Translator", "desc": "Translation service", "cat": "Language", "url": "https://www.microsoft.com/en-us/translator/", "auth": "apiKey"},
271
+ {"name": "Oxford Dictionaries", "desc": "Dictionary API", "cat": "Language", "url": "https://developer.oxforddictionaries.com/", "auth": "apiKey"},
272
+ {"name": "Yandex Translate", "desc": "Translation service", "cat": "Language", "url": "https://tech.yandex.com/translate/", "auth": "apiKey"},
273
+
274
+ # Video
275
+ {"name": "Dailymotion", "desc": "Video platform", "cat": "Video", "url": "https://developer.dailymotion.com/api", "auth": "OAuth"},
276
+ {"name": "Rotten Tomatoes", "desc": "Movie reviews", "cat": "Entertainment", "url": "https://developer.fandango.com/Rotten_Tomatoes", "auth": "apiKey"},
277
+ {"name": "TMDB", "desc": "Movie database", "cat": "Entertainment", "url": "https://developers.themoviedb.org", "auth": "apiKey"},
278
+ {"name": "TVmaze", "desc": "TV show database", "cat": "Entertainment", "url": "https://www.tvmaze.com/api", "auth": "None"},
279
+ {"name": "Vimeo", "desc": "Video platform", "cat": "Video", "url": "https://developer.vimeo.com/", "auth": "OAuth"},
280
+ {"name": "YouTube", "desc": "Video platform", "cat": "Video", "url": "https://developers.google.com/youtube/", "auth": "OAuth"},
281
+
282
+ # Voice
283
+ {"name": "Cloud Speech API", "desc": "Google speech recognition", "cat": "AI", "url": "https://cloud.google.com/speech/", "auth": "apiKey"},
284
+
285
+ # Vision
286
+ {"name": "Clarifai", "desc": "Image and video recognition", "cat": "AI", "url": "https://clarifai.com/developer/guide/", "auth": "apiKey"},
287
+ {"name": "Cloud Vision API", "desc": "Google image analysis", "cat": "AI", "url": "https://cloud.google.com/vision/", "auth": "apiKey"},
288
+ {"name": "Computer Vision API", "desc": "Microsoft image analysis", "cat": "AI", "url": "https://azure.microsoft.com/en-us/services/cognitive-services/computer-vision/", "auth": "apiKey"},
289
+ {"name": "Face++", "desc": "Face recognition", "cat": "AI", "url": "https://www.faceplusplus.com/", "auth": "apiKey"},
290
+ {"name": "Watson Visual Recognition", "desc": "IBM image analysis", "cat": "AI", "url": "https://cloud.ibm.com/catalog/services/visual-recognition", "auth": "apiKey"},
291
+
292
+ # Weather
293
+ {"name": "AccuWeather", "desc": "Weather data", "cat": "Weather", "url": "https://developer.accuweather.com/", "auth": "apiKey"},
294
+ {"name": "Aeris Weather", "desc": "Weather API", "cat": "Weather", "url": "http://www.aerisweather.com/develop/", "auth": "apiKey"},
295
+ {"name": "OpenWeatherMap", "desc": "Weather data", "cat": "Weather", "url": "https://openweathermap.org/api", "auth": "apiKey"},
296
+ {"name": "Weather Underground", "desc": "Weather data", "cat": "Weather", "url": "https://www.wunderground.com/weather/api/", "auth": "apiKey"},
297
+ {"name": "Yahoo Weather", "desc": "Weather data", "cat": "Weather", "url": "https://developer.yahoo.com/weather/", "auth": "None"},
298
+ ]
299
+
300
+ return tonny_apis
301
+
302
+ def parse_n0shake_markdown():
303
+ """Parse n0shake/Public-APIs markdown format"""
304
+ apis = []
305
+
306
+ # Embedded data from n0shake repo
307
+ n0shake_apis = [
308
+ # Advertising
309
+ {"name": "Amazon Mobile Ads", "desc": "Mobile ad monetization", "cat": "Advertising", "url": "https://developer.amazon.com/mobile-ads", "auth": "apiKey"},
310
+ {"name": "Facebook Marketing API", "desc": "Ad campaign management", "cat": "Marketing", "url": "https://developers.facebook.com/docs/marketing-apis", "auth": "OAuth"},
311
+ {"name": "Google AdSense", "desc": "Website monetization", "cat": "Advertising", "url": "https://developers.google.com/adsense/", "auth": "OAuth"},
312
+ {"name": "Google AdWords", "desc": "Ad campaign management", "cat": "Advertising", "url": "https://developers.google.com/adwords/api/", "auth": "OAuth"},
313
+ {"name": "Kevel Ad APIs", "desc": "Build your own ad server", "cat": "Advertising", "url": "https://dev.kevel.co", "auth": "apiKey"},
314
+ {"name": "Microsoft Ads", "desc": "Bing advertising", "cat": "Advertising", "url": "https://docs.microsoft.com/en-us/advertising/", "auth": "OAuth"},
315
+
316
+ # Analytics
317
+ {"name": "Amazon Mobile Analytics", "desc": "App usage analytics", "cat": "Analytics", "url": "https://aws.amazon.com/documentation/mobileanalytics/", "auth": "apiKey"},
318
+ {"name": "Clicky", "desc": "Website traffic analytics", "cat": "Analytics", "url": "https://clicky.com/help/api", "auth": "apiKey"},
319
+ {"name": "DitchCarbon", "desc": "Carbon emissions data", "cat": "Environment", "url": "https://docs.ditchcarbon.com/", "auth": "apiKey"},
320
+ {"name": "Google Analytics", "desc": "Web analytics", "cat": "Analytics", "url": "https://developers.google.com/analytics/", "auth": "OAuth"},
321
+ {"name": "Matomo", "desc": "Web analytics platform", "cat": "Analytics", "url": "https://matomo.org/docs/analytics-api/", "auth": "apiKey"},
322
+ {"name": "MixPanel", "desc": "Product analytics", "cat": "Analytics", "url": "https://developer.mixpanel.com/", "auth": "apiKey"},
323
+ {"name": "Open Web Analytics", "desc": "Open source analytics", "cat": "Analytics", "url": "https://github.com/padams/Open-Web-Analytics/wiki/Data-Access-API", "auth": "None"},
324
+ {"name": "Ticksel", "desc": "Human-friendly analytics", "cat": "Analytics", "url": "https://ticksel.com", "auth": "apiKey"},
325
+ {"name": "Woopra", "desc": "Real-time analytics", "cat": "Analytics", "url": "https://www.woopra.com/docs/developer/analytics-api/", "auth": "apiKey"},
326
+ {"name": "Zoho Reports", "desc": "BI and reporting", "cat": "Analytics", "url": "https://www.zoho.com/analytics/api/", "auth": "apiKey"},
327
+
328
+ # Augmented Reality
329
+ {"name": "Vuforia", "desc": "AR development SDK", "cat": "AR/VR", "url": "https://library.vuforia.com/", "auth": "apiKey"},
330
+ {"name": "Wikitude", "desc": "AR solutions", "cat": "AR/VR", "url": "http://www.wikitude.com/download/", "auth": "apiKey"},
331
+
332
+ # Barcode
333
+ {"name": "Dynamic QR Code", "desc": "QR code generation", "cat": "Tools", "url": "https://rapidapi.com/qr-code-dynamic-and-static1/api", "auth": "apiKey"},
334
+ {"name": "Google Barcode", "desc": "Barcode detection", "cat": "Tools", "url": "https://developers.google.com/vision/barcodes-overview", "auth": "apiKey"},
335
+ {"name": "EAN-Search", "desc": "Product barcode lookup", "cat": "E-commerce", "url": "https://www.ean-search.org/ean-database-api.html", "auth": "apiKey"},
336
+
337
+ # Big Data
338
+ {"name": "Google Charts", "desc": "Data visualization", "cat": "Analytics", "url": "https://developers.google.com/chart/", "auth": "None"},
339
+ {"name": "Keen IO", "desc": "Event data platform", "cat": "Analytics", "url": "https://keen.io/docs/api/", "auth": "apiKey"},
340
+ {"name": "MongoDB", "desc": "NoSQL database", "cat": "Database", "url": "https://www.mongodb.com/docs/", "auth": "apiKey"},
341
+ {"name": "LinkedData Center", "desc": "RDF graph database", "cat": "Database", "url": "http://linkeddata.center/", "auth": "apiKey"},
342
+
343
+ # Cryptocurrency
344
+ {"name": "Bitcoin", "desc": "Bitcoin development", "cat": "Cryptocurrency", "url": "https://developer.bitcoin.org/", "auth": "None"},
345
+ {"name": "Bitcoincharts", "desc": "Bitcoin market data", "cat": "Cryptocurrency", "url": "https://bitcoincharts.com/about/markets-api/", "auth": "None"},
346
+ {"name": "BitPay", "desc": "Bitcoin payments", "cat": "Cryptocurrency", "url": "https://bitpay.com/developers", "auth": "apiKey"},
347
+ {"name": "Block", "desc": "Crypto wallet", "cat": "Cryptocurrency", "url": "https://block.io/", "auth": "apiKey"},
348
+ {"name": "BlockCypher", "desc": "Blockchain infrastructure", "cat": "Cryptocurrency", "url": "https://www.blockcypher.com/", "auth": "apiKey"},
349
+ {"name": "BlockFacts", "desc": "Digital asset data", "cat": "Cryptocurrency", "url": "https://blockfacts.io/", "auth": "apiKey"},
350
+ {"name": "Coinbase", "desc": "Cryptocurrency exchange", "cat": "Cryptocurrency", "url": "https://developers.coinbase.com/", "auth": "OAuth"},
351
+ {"name": "CoinDesk", "desc": "Bitcoin Price Index", "cat": "Cryptocurrency", "url": "http://www.coindesk.com/api/", "auth": "None"},
352
+ {"name": "CoinGecko", "desc": "Cryptocurrency data", "cat": "Cryptocurrency", "url": "https://coingecko.com/en/api", "auth": "None"},
353
+ {"name": "Coinlore", "desc": "Crypto tick data", "cat": "Cryptocurrency", "url": "https://www.coinlore.com/cryptocurrency-data-api", "auth": "None"},
354
+ {"name": "CoinMarketCap", "desc": "Crypto prices", "cat": "Cryptocurrency", "url": "https://coinmarketcap.com/api/", "auth": "apiKey"},
355
+ {"name": "Coinpaprika", "desc": "Crypto market data", "cat": "Cryptocurrency", "url": "https://api.coinpaprika.com", "auth": "None"},
356
+ {"name": "CryptoCompare", "desc": "Crypto comparison", "cat": "Cryptocurrency", "url": "https://www.cryptocompare.com/api", "auth": "None"},
357
+ {"name": "Cryptonator", "desc": "Exchange rates", "cat": "Cryptocurrency", "url": "https://www.cryptonator.com/api/", "auth": "None"},
358
+ {"name": "Coinigy", "desc": "Trading platform", "cat": "Cryptocurrency", "url": "https://coinigy.docs.apiary.io", "auth": "apiKey"},
359
+ {"name": "Covalent", "desc": "Blockchain data", "cat": "Cryptocurrency", "url": "https://www.covalenthq.com/docs/api/", "auth": "apiKey"},
360
+ {"name": "Poloniex", "desc": "Crypto exchange", "cat": "Cryptocurrency", "url": "https://poloniex.com/support/api/", "auth": "apiKey"},
361
+ {"name": "ShapeShift", "desc": "Crypto exchange", "cat": "Cryptocurrency", "url": "https://shapeshift.io/", "auth": "None"},
362
+ {"name": "Technical Analysis", "desc": "Crypto technical analysis", "cat": "Cryptocurrency", "url": "https://technical-analysis-api.com", "auth": "apiKey"},
363
+
364
+ # Calendar
365
+ {"name": "CalendarIndex", "desc": "Holidays and working days", "cat": "Productivity", "url": "https://www.calendarindex.com", "auth": "apiKey"},
366
+ {"name": "DigiDates", "desc": "Date calculations", "cat": "Tools", "url": "https://digidates.de/en/", "auth": "None"},
367
+ {"name": "Holiday API", "desc": "Public holidays", "cat": "Productivity", "url": "https://holidayapi.pl/", "auth": "apiKey"},
368
+ {"name": "OpenHolidays", "desc": "European holidays", "cat": "Productivity", "url": "https://www.openholidaysapi.org/", "auth": "None"},
369
+
370
+ # Captcha
371
+ {"name": "Anti-Captcha", "desc": "Captcha solving", "cat": "Tools", "url": "https://anti-captcha.com/apidoc", "auth": "apiKey"},
372
+ {"name": "reCAPTCHA", "desc": "Spam protection", "cat": "Security", "url": "https://developers.google.com/recaptcha/", "auth": "apiKey"},
373
+
374
+ # Check-In
375
+ {"name": "Facebook Check-In", "desc": "Location check-ins", "cat": "Social", "url": "https://developers.facebook.com/docs/graph-api/reference/checkin", "auth": "OAuth"},
376
+ {"name": "Google Places", "desc": "Places database", "cat": "Places", "url": "https://developers.google.com/places/", "auth": "apiKey"},
377
+ {"name": "Foursquare Check-In", "desc": "Location check-ins", "cat": "Places", "url": "https://developer.foursquare.com/", "auth": "OAuth"},
378
+
379
+ # Commerce
380
+ {"name": "Commerce Layer", "desc": "Headless commerce", "cat": "E-commerce", "url": "https://docs.commercelayer.io/api/", "auth": "OAuth"},
381
+ {"name": "envoice", "desc": "Invoicing API", "cat": "Finance", "url": "https://www.envoice.in/reference/api/docs", "auth": "apiKey"},
382
+ {"name": "koomalooma", "desc": "Loyalty program", "cat": "E-commerce", "url": "http://business.koomalooma.com", "auth": "apiKey"},
383
+ {"name": "Moltin", "desc": "E-commerce API", "cat": "E-commerce", "url": "https://www.moltin.com/developers", "auth": "OAuth"},
384
+ {"name": "Stripe", "desc": "Payment processing", "cat": "Finance", "url": "https://stripe.com/docs/api", "auth": "apiKey"},
385
+ {"name": "Braintree", "desc": "Payment platform", "cat": "Finance", "url": "https://developers.braintreepayments.com", "auth": "apiKey"},
386
+
387
+ # Communication
388
+ {"name": "Africa's Talking", "desc": "African telco services", "cat": "Communication", "url": "https://africastalking.com/", "auth": "apiKey"},
389
+ {"name": "iP1sms", "desc": "SMS worldwide", "cat": "Communication", "url": "https://www.ip1sms.com/en/developer/", "auth": "apiKey"},
390
+ {"name": "Eqivo", "desc": "Programmable voice", "cat": "Communication", "url": "https://eqivo.org", "auth": "apiKey"},
391
+ {"name": "MailGun", "desc": "Transactional email", "cat": "Email", "url": "https://mailgun.com", "auth": "apiKey"},
392
+ {"name": "Nexmo", "desc": "SMS and voice", "cat": "Communication", "url": "https://developer.nexmo.com", "auth": "apiKey"},
393
+ {"name": "Sakari", "desc": "SMS API", "cat": "Communication", "url": "https://developer.sakari.io", "auth": "apiKey"},
394
+ {"name": "Telnyx", "desc": "Communications platform", "cat": "Communication", "url": "https://developers.telnyx.com/", "auth": "apiKey"},
395
+ {"name": "The SMS Works", "desc": "SMS API", "cat": "Communication", "url": "https://thesmsworks.co.uk/sms-api", "auth": "apiKey"},
396
+ {"name": "Twilio", "desc": "Communications APIs", "cat": "Communication", "url": "https://www.twilio.com/docs", "auth": "apiKey"},
397
+
398
+ # Content
399
+ {"name": "Bible API", "desc": "Bible translations", "cat": "Books", "url": "https://bible-api.com/", "auth": "None"},
400
+ {"name": "Fruits API", "desc": "Fruit tree data", "cat": "Food", "url": "https://github.com/Franqsanz/fruits-api", "auth": "None"},
401
+ {"name": "Jokes API", "desc": "Jokes database", "cat": "Entertainment", "url": "https://jokes.one/api/joke/", "auth": "apiKey"},
402
+ {"name": "Perfect Tense", "desc": "Grammar checking", "cat": "Language", "url": "https://www.perfecttense.com/developers", "auth": "apiKey"},
403
+ {"name": "Random Data Generator", "desc": "Generate test data", "cat": "Tools", "url": "https://randommer.io/randommer-api", "auth": "apiKey"},
404
+ {"name": "Random Facts", "desc": "Random facts", "cat": "Entertainment", "url": "https://fungenerators.com/api/facts/", "auth": "apiKey"},
405
+ {"name": "Today in History", "desc": "Historical events", "cat": "Education", "url": "https://history.muffinlabs.com/", "auth": "None"},
406
+ {"name": "Wikipedia API", "desc": "Encyclopedia", "cat": "Education", "url": "https://en.wikipedia.org/w/api.php", "auth": "None"},
407
+
408
+ # Currency
409
+ {"name": "Currency-api", "desc": "Exchange rates", "cat": "Finance", "url": "https://github.com/fawazahmed0/currency-api", "auth": "None"},
410
+ {"name": "CurrencyLayer", "desc": "Currency conversion", "cat": "Finance", "url": "https://currencylayer.com/documentation", "auth": "apiKey"},
411
+ {"name": "ECB Exchange Rates", "desc": "European bank rates", "cat": "Finance", "url": "https://www.ecb.europa.eu/stats/eurofxref/", "auth": "None"},
412
+ {"name": "ExchangeRate-API", "desc": "Currency conversion", "cat": "Finance", "url": "https://www.exchangerate-api.com/docs/overview", "auth": "apiKey"},
413
+ {"name": "ExchangeRatesAPI", "desc": "Foreign exchange", "cat": "Finance", "url": "https://exchangeratesapi.io/", "auth": "apiKey"},
414
+ {"name": "Fixer.io", "desc": "Exchange rates", "cat": "Finance", "url": "http://fixer.io/", "auth": "apiKey"},
415
+ {"name": "Frankfurter", "desc": "Currency data", "cat": "Finance", "url": "https://www.frankfurter.app/docs/", "auth": "None"},
416
+
417
+ # Design
418
+ {"name": "Icon Horse", "desc": "Favicon API", "cat": "Design", "url": "https://icon.horse/usage", "auth": "None"},
419
+ {"name": "Pexels", "desc": "Stock photos", "cat": "Photography", "url": "https://www.pexels.com/api/", "auth": "apiKey"},
420
+ {"name": "PHP-Noise", "desc": "Noise backgrounds", "cat": "Design", "url": "https://php-noise.com/", "auth": "None"},
421
+
422
+ # Dictionary
423
+ {"name": "Agarathi", "desc": "Tamil dictionary", "cat": "Language", "url": "https://agarathi.com/api/dictionary", "auth": "apiKey"},
424
+ {"name": "Cambridge Dictionaries", "desc": "Dictionary API", "cat": "Language", "url": "http://dictionary.cambridge.org/license.html", "auth": "apiKey"},
425
+ {"name": "Datamuse", "desc": "Word finding", "cat": "Language", "url": "https://www.datamuse.com/api/", "auth": "None"},
426
+ {"name": "Free Dictionary", "desc": "Word definitions", "cat": "Language", "url": "https://dictionaryapi.dev/", "auth": "None"},
427
+ {"name": "Lingua Robot", "desc": "Language processing", "cat": "Language", "url": "https://www.linguarobot.io/", "auth": "apiKey"},
428
+ {"name": "Merriam-Webster", "desc": "Dictionary and thesaurus", "cat": "Language", "url": "http://www.dictionaryapi.com/", "auth": "apiKey"},
429
+ {"name": "Wordnik", "desc": "Word definitions", "cat": "Language", "url": "http://developer.wordnik.com/", "auth": "apiKey"},
430
+ {"name": "Words API", "desc": "Word definitions", "cat": "Language", "url": "https://www.wordsapi.com/", "auth": "apiKey"},
431
+ {"name": "Wiktionary", "desc": "Multilingual dictionary", "cat": "Language", "url": "https://en.wiktionary.org/w/api.php", "auth": "None"},
432
+
433
+ # Entertainment
434
+ {"name": "AniList GraphQL", "desc": "Anime and manga database", "cat": "Entertainment", "url": "https://anilist.gitbook.io/anilist-apiv2-docs/", "auth": "OAuth"},
435
+ {"name": "Bob's Burgers API", "desc": "TV show data", "cat": "Entertainment", "url": "https://www.bobsburgersapi.com/documentation", "auth": "None"},
436
+ {"name": "Breaking Bad API", "desc": "TV show data", "cat": "Entertainment", "url": "https://breakingbadapi.com/documentation", "auth": "None"},
437
+ {"name": "Cat as a Service", "desc": "Cat images", "cat": "Entertainment", "url": "https://cataas.com/", "auth": "None"},
438
+ {"name": "Comic Vine", "desc": "Comic database", "cat": "Entertainment", "url": "http://comicvine.gamespot.com/api/", "auth": "apiKey"},
439
+ {"name": "Danbooru", "desc": "Image board", "cat": "Entertainment", "url": "https://danbooru.donmai.us/posts?tags=help%3Aapi", "auth": "apiKey"},
440
+ {"name": "Dune API", "desc": "Dune universe data", "cat": "Entertainment", "url": "https://github.com/ywalia01/dune-api", "auth": "None"},
441
+ {"name": "Final Space API", "desc": "TV show data", "cat": "Entertainment", "url": "https://finalspaceapi.com/docs/", "auth": "None"},
442
+ {"name": "Fun Translations", "desc": "Language translations", "cat": "Entertainment", "url": "https://funtranslations.com/api/", "auth": "apiKey"},
443
+ {"name": "Lord of the Rings API", "desc": "LOTR data", "cat": "Entertainment", "url": "https://the-one-api.dev/documentation", "auth": "apiKey"},
444
+ {"name": "Marvel", "desc": "Marvel comics data", "cat": "Entertainment", "url": "https://developer.marvel.com/", "auth": "apiKey"},
445
+ {"name": "Jikan", "desc": "My Anime List unofficial", "cat": "Entertainment", "url": "https://jikan.moe/", "auth": "None"},
446
+ {"name": "Owen Wilson Wow", "desc": "Movie quotes", "cat": "Entertainment", "url": "https://owen-wilson-wow-api.onrender.com/", "auth": "None"},
447
+ {"name": "PokeAPI", "desc": "Pokemon data", "cat": "Games", "url": "https://pokeapi.co/", "auth": "None"},
448
+ {"name": "Rick and Morty", "desc": "TV show data", "cat": "Entertainment", "url": "https://rickandmortyapi.com/", "auth": "None"},
449
+ {"name": "Riddles API", "desc": "Random riddles", "cat": "Entertainment", "url": "https://riddles-api.vercel.app/", "auth": "None"},
450
+ {"name": "STAPI", "desc": "Star Trek data", "cat": "Entertainment", "url": "https://stapi.co/api-documentation", "auth": "None"},
451
+ {"name": "SWAPI", "desc": "Star Wars data", "cat": "Entertainment", "url": "https://www.swapi.tech/", "auth": "None"},
452
+ {"name": "Studio Ghibli", "desc": "Ghibli films data", "cat": "Entertainment", "url": "https://ghibliapi.vercel.app/", "auth": "None"},
453
+ {"name": "TCGdex", "desc": "Pokemon TCG data", "cat": "Games", "url": "https://www.tcgdex.dev/", "auth": "None"},
454
+
455
+ # Events
456
+ {"name": "Picatic", "desc": "Event ticketing", "cat": "Events", "url": "http://developer.picatic.com/", "auth": "OAuth"},
457
+
458
+ # Face Recognition
459
+ {"name": "Kairos", "desc": "Face recognition", "cat": "AI", "url": "https://www.kairos.com/", "auth": "apiKey"},
460
+ {"name": "Skybiometry", "desc": "Face detection", "cat": "AI", "url": "https://www.skybiometry.com", "auth": "apiKey"},
461
+
462
+ # File Storage
463
+ {"name": "Amazon S3", "desc": "Cloud storage", "cat": "Cloud", "url": "https://aws.amazon.com/s3/", "auth": "apiKey"},
464
+ {"name": "Cloudinary", "desc": "Image and video management", "cat": "Media", "url": "http://cloudinary.com/documentation", "auth": "apiKey"},
465
+ {"name": "Filestack", "desc": "File handling", "cat": "Cloud", "url": "https://filestack.com/docs/", "auth": "apiKey"},
466
+ {"name": "Microsoft Graph", "desc": "Microsoft cloud files", "cat": "Cloud", "url": "https://graph.microsoft.io/", "auth": "OAuth"},
467
+ {"name": "PDF Blocks", "desc": "PDF manipulation", "cat": "Documents", "url": "https://www.pdfblocks.com/docs/api/", "auth": "apiKey"},
468
+ {"name": "SignNow", "desc": "eSignature API", "cat": "Documents", "url": "https://docs.signnow.com/", "auth": "OAuth"},
469
+ {"name": "Smash", "desc": "Large file upload", "cat": "Cloud", "url": "https://api.fromsmash.com/", "auth": "apiKey"},
470
+ {"name": "Vector Express", "desc": "Vector file processing", "cat": "Design", "url": "https://github.com/smidyo/vectorexpress-api", "auth": "apiKey"},
471
+ {"name": "Vertopal", "desc": "File conversion", "cat": "Tools", "url": "https://www.vertopal.com/en/developer/api/", "auth": "apiKey"},
472
+
473
+ # Finance
474
+ {"name": "Alpha Vantage", "desc": "Stock market data", "cat": "Finance", "url": "https://www.alphavantage.co/", "auth": "apiKey"},
475
+ {"name": "Atom Finance", "desc": "Market and earnings data", "cat": "Finance", "url": "https://docs.atom.finance/", "auth": "apiKey"},
476
+ {"name": "IEX Cloud", "desc": "Stock market data", "cat": "Finance", "url": "https://iexcloud.io/docs/api/", "auth": "apiKey"},
477
+ {"name": "Twelve Data", "desc": "Stock market data", "cat": "Finance", "url": "https://twelvedata.com/docs/", "auth": "apiKey"},
478
+ {"name": "IBANAPI", "desc": "IBAN validation", "cat": "Finance", "url": "https://ibanapi.com/get-api", "auth": "apiKey"},
479
+ {"name": "Parqet Logo API", "desc": "Company logos", "cat": "Finance", "url": "https://developers.parqet.com/docs/assets/logos", "auth": "None"},
480
+ {"name": "Portfolio Optimizer", "desc": "Investment optimization", "cat": "Finance", "url": "https://portfoliooptimizer.io/", "auth": "apiKey"},
481
+
482
+ # Fitness
483
+ {"name": "HealthGraph", "desc": "RunKeeper data", "cat": "Health", "url": "https://runkeeper.com/developer/healthgraph/", "auth": "OAuth"},
484
+ {"name": "Open Food Facts", "desc": "Food database", "cat": "Food", "url": "https://en.wiki.openfoodfacts.org/API", "auth": "None"},
485
+ {"name": "VeganCheck", "desc": "Product vegan check", "cat": "Food", "url": "https://jokenetwork.de/vegancheck-api", "auth": "None"},
486
+
487
+ # Google
488
+ {"name": "Google BigQuery", "desc": "Data analytics", "cat": "Analytics", "url": "https://cloud.google.com/bigquery/docs/reference/rest/", "auth": "OAuth"},
489
+ {"name": "Google Books", "desc": "Books search", "cat": "Books", "url": "https://developers.google.com/books/", "auth": "apiKey"},
490
+ {"name": "Google Classroom", "desc": "Education platform", "cat": "Education", "url": "https://developers.google.com/classroom/", "auth": "OAuth"},
491
+ {"name": "Google Custom Search", "desc": "Search API", "cat": "Search", "url": "https://developers.google.com/custom-search/", "auth": "apiKey"},
492
+ {"name": "Google Fitness", "desc": "Fitness data", "cat": "Health", "url": "https://developers.google.com/fit/", "auth": "OAuth"},
493
+ {"name": "Google Fonts", "desc": "Web fonts", "cat": "Design", "url": "https://developers.google.com/fonts/", "auth": "None"},
494
+ {"name": "Google Genomics", "desc": "Genomics data", "cat": "Science", "url": "https://cloud.google.com/genomics/reference/rest/", "auth": "OAuth"},
495
+ {"name": "Google Identity", "desc": "Authentication", "cat": "Security", "url": "https://developers.google.com/identity/", "auth": "OAuth"},
496
+ {"name": "Google Monitoring", "desc": "Cloud monitoring", "cat": "DevOps", "url": "https://cloud.google.com/monitoring/api/v3/", "auth": "OAuth"},
497
+
498
+ # Identity
499
+ {"name": "BlockScore", "desc": "Identity verification", "cat": "Security", "url": "https://docs.blockscore.com/", "auth": "apiKey"},
500
+ {"name": "Cognito", "desc": "Identity verification", "cat": "Security", "url": "https://cognitohq.com/docs", "auth": "apiKey"},
501
+ ]
502
+
503
+ return n0shake_apis
504
+
505
+ def generate_more_apis():
506
+ """Generate additional APIs from various categories"""
507
+ more_apis = [
508
+ # Government & Open Data
509
+ {"name": "USA.gov", "desc": "US government data", "cat": "Government", "url": "https://www.usa.gov/developer", "auth": "None"},
510
+ {"name": "Data.gov", "desc": "US open data", "cat": "Government", "url": "https://www.data.gov/developers/apis", "auth": "None"},
511
+ {"name": "UK Government", "desc": "UK government APIs", "cat": "Government", "url": "https://www.api.gov.uk/", "auth": "apiKey"},
512
+ {"name": "EU Open Data", "desc": "European Union data", "cat": "Government", "url": "https://data.europa.eu/en", "auth": "None"},
513
+ {"name": "World Bank", "desc": "Global development data", "cat": "Government", "url": "https://data.worldbank.org/", "auth": "None"},
514
+ {"name": "UN Data", "desc": "United Nations data", "cat": "Government", "url": "http://data.un.org/", "auth": "None"},
515
+ {"name": "Census Bureau", "desc": "US census data", "cat": "Government", "url": "https://www.census.gov/data/developers/", "auth": "apiKey"},
516
+ {"name": "FDA", "desc": "US drug and food data", "cat": "Healthcare", "url": "https://open.fda.gov/", "auth": "None"},
517
+ {"name": "CDC", "desc": "Health statistics", "cat": "Healthcare", "url": "https://www.cdc.gov/apis.html", "auth": "None"},
518
+ {"name": "Data.gov.uk", "desc": "UK open data", "cat": "Government", "url": "https://data.gov.uk/", "auth": "None"},
519
+
520
+ # Science & Research
521
+ {"name": "NASA APIs", "desc": "Space and astronomy data", "cat": "Science", "url": "https://api.nasa.gov/", "auth": "apiKey"},
522
+ {"name": "SpaceX", "desc": "SpaceX launch data", "cat": "Science", "url": "https://github.com/r-spacex/SpaceX-API", "auth": "None"},
523
+ {"name": "Open Science Framework", "desc": "Research data", "cat": "Science", "url": "https://developer.osf.io/", "auth": "OAuth"},
524
+ {"name": "PubMed", "desc": "Medical literature", "cat": "Healthcare", "url": "https://www.ncbi.nlm.nih.gov/home/develop/api/", "auth": "apiKey"},
525
+ {"name": "arXiv", "desc": "Scientific papers", "cat": "Science", "url": "https://arxiv.org/help/api/", "auth": "None"},
526
+ {"name": "CERN Open Data", "desc": "Particle physics data", "cat": "Science", "url": "http://opendata.cern.ch/", "auth": "None"},
527
+ {"name": "GBIF", "desc": "Biodiversity data", "cat": "Science", "url": "https://www.gbif.org/developer/summary", "auth": "None"},
528
+ {"name": "iNaturalist", "desc": "Nature observations", "cat": "Science", "url": "https://www.inaturalist.org/pages/api+reference", "auth": "OAuth"},
529
+ {"name": "USGS", "desc": "Geological data", "cat": "Science", "url": "https://www.usgs.gov/products/data-and-tools/apis", "auth": "None"},
530
+ {"name": "NOAA", "desc": "Weather and ocean data", "cat": "Weather", "url": "https://www.ncdc.noaa.gov/cdo-web/webservices/v2", "auth": "apiKey"},
531
+
532
+ # Education
533
+ {"name": "Khan Academy", "desc": "Educational content", "cat": "Education", "url": "https://github.com/Khan/khan-api", "auth": "OAuth"},
534
+ {"name": "Coursera", "desc": "Online courses", "cat": "Education", "url": "https://building.coursera.org/developer/", "auth": "OAuth"},
535
+ {"name": "edX", "desc": "Online learning", "cat": "Education", "url": "https://github.com/edx/course-discovery", "auth": "OAuth"},
536
+ {"name": "Open Trivia DB", "desc": "Trivia questions", "cat": "Education", "url": "https://opentdb.com/api_config.php", "auth": "None"},
537
+ {"name": "Numbers API", "desc": "Number facts", "cat": "Education", "url": "http://numbersapi.com/", "auth": "None"},
538
+ {"name": "Wolfram Alpha", "desc": "Computational knowledge", "cat": "Education", "url": "https://products.wolframalpha.com/api/", "auth": "apiKey"},
539
+ {"name": "QuizAPI", "desc": "Programming quizzes", "cat": "Education", "url": "https://quizapi.io/", "auth": "apiKey"},
540
+ {"name": "uClassify", "desc": "Text classification", "cat": "AI", "url": "https://www.uclassify.com/docs/restapi", "auth": "apiKey"},
541
+
542
+ # Sports
543
+ {"name": "ESPN", "desc": "Sports data and news", "cat": "Sports", "url": "http://www.espn.com/apis/devcenter/", "auth": "apiKey"},
544
+ {"name": "Football-Data.org", "desc": "Football statistics", "cat": "Sports", "url": "https://www.football-data.org/documentation/", "auth": "apiKey"},
545
+ {"name": "NBA", "desc": "Basketball statistics", "cat": "Sports", "url": "https://www.nba.com/stats/", "auth": "None"},
546
+ {"name": "NHL", "desc": "Hockey statistics", "cat": "Sports", "url": "https://gitlab.com/dword4/nhlapi", "auth": "None"},
547
+ {"name": "MLB", "desc": "Baseball statistics", "cat": "Sports", "url": "http://lookup-service-prod.mlb.com/", "auth": "None"},
548
+ {"name": "TheSportsDB", "desc": "Sports database", "cat": "Sports", "url": "https://www.thesportsdb.com/api.php", "auth": "apiKey"},
549
+ {"name": "API-Football", "desc": "Football data", "cat": "Sports", "url": "https://www.api-football.com/documentation", "auth": "apiKey"},
550
+ {"name": "Ergast F1", "desc": "Formula 1 data", "cat": "Sports", "url": "http://ergast.com/mrd/", "auth": "None"},
551
+ {"name": "OpenLigaDB", "desc": "German football data", "cat": "Sports", "url": "https://www.openligadb.de/", "auth": "None"},
552
+ {"name": "Balldontlie", "desc": "NBA statistics", "cat": "Sports", "url": "https://www.balldontlie.io/", "auth": "None"},
553
+
554
+ # Food & Recipes
555
+ {"name": "Spoonacular", "desc": "Recipe and nutrition", "cat": "Food", "url": "https://spoonacular.com/food-api", "auth": "apiKey"},
556
+ {"name": "Edamam", "desc": "Nutrition data", "cat": "Food", "url": "https://developer.edamam.com/", "auth": "apiKey"},
557
+ {"name": "TheMealDB", "desc": "Recipe database", "cat": "Food", "url": "https://www.themealdb.com/api.php", "auth": "apiKey"},
558
+ {"name": "TheCocktailDB", "desc": "Cocktail recipes", "cat": "Food", "url": "https://www.thecocktaildb.com/api.php", "auth": "apiKey"},
559
+ {"name": "USDA FoodData", "desc": "Food composition data", "cat": "Food", "url": "https://fdc.nal.usda.gov/api-guide.html", "auth": "apiKey"},
560
+ {"name": "Tasty", "desc": "Recipes from Tasty", "cat": "Food", "url": "https://rapidapi.com/apidojo/api/tasty/", "auth": "apiKey"},
561
+ {"name": "Nutritionix", "desc": "Nutrition database", "cat": "Food", "url": "https://www.nutritionix.com/business/api", "auth": "apiKey"},
562
+ {"name": "PunkAPI", "desc": "BrewDog beer recipes", "cat": "Food", "url": "https://punkapi.com/documentation/v2", "auth": "None"},
563
+
564
+ # Travel
565
+ {"name": "Amadeus", "desc": "Travel booking", "cat": "Travel", "url": "https://developers.amadeus.com/", "auth": "OAuth"},
566
+ {"name": "Skyscanner", "desc": "Flight search", "cat": "Travel", "url": "https://developers.skyscanner.net/", "auth": "apiKey"},
567
+ {"name": "Booking.com", "desc": "Hotel booking", "cat": "Travel", "url": "https://developers.booking.com/", "auth": "OAuth"},
568
+ {"name": "Tripadvisor", "desc": "Travel reviews", "cat": "Travel", "url": "https://www.tripadvisor.com/developers", "auth": "apiKey"},
569
+ {"name": "AirVisual", "desc": "Air quality data", "cat": "Environment", "url": "https://www.iqair.com/air-pollution-data-api", "auth": "apiKey"},
570
+ {"name": "REST Countries", "desc": "Country information", "cat": "Geography", "url": "https://restcountries.com/", "auth": "None"},
571
+ {"name": "Geonames", "desc": "Geographic data", "cat": "Geography", "url": "http://www.geonames.org/export/web-services.html", "auth": "None"},
572
+ {"name": "IP Geolocation", "desc": "IP location lookup", "cat": "Geography", "url": "https://ipgeolocation.io/", "auth": "apiKey"},
573
+ {"name": "TimeZoneDB", "desc": "Time zone data", "cat": "Tools", "url": "https://timezonedb.com/api", "auth": "apiKey"},
574
+ {"name": "Airports", "desc": "Airport data", "cat": "Travel", "url": "https://airport-info.p.rapidapi.com/", "auth": "apiKey"},
575
+
576
+ # Utilities & Tools
577
+ {"name": "Abstract API", "desc": "Various utility APIs", "cat": "Tools", "url": "https://www.abstractapi.com/", "auth": "apiKey"},
578
+ {"name": "APIFlash", "desc": "Screenshot API", "cat": "Tools", "url": "https://apiflash.com/", "auth": "apiKey"},
579
+ {"name": "ScreenshotAPI", "desc": "Website screenshots", "cat": "Tools", "url": "https://screenshotapi.net/", "auth": "apiKey"},
580
+ {"name": "IP2Location", "desc": "IP geolocation", "cat": "Tools", "url": "https://www.ip2location.com/web-service/", "auth": "apiKey"},
581
+ {"name": "Pastebin", "desc": "Text storage", "cat": "Tools", "url": "https://pastebin.com/doc_api", "auth": "apiKey"},
582
+ {"name": "Haveibeenpwned", "desc": "Data breach check", "cat": "Security", "url": "https://haveibeenpwned.com/API/v3", "auth": "apiKey"},
583
+ {"name": "IPStack", "desc": "IP lookup", "cat": "Tools", "url": "https://ipstack.com/documentation", "auth": "apiKey"},
584
+ {"name": "UserAgent", "desc": "Browser user agent", "cat": "Tools", "url": "https://useragent.api.io/", "auth": "None"},
585
+ {"name": "ZeroBounce", "desc": "Email validation", "cat": "Email", "url": "https://www.zerobounce.net/docs/", "auth": "apiKey"},
586
+ {"name": "Hunter.io", "desc": "Email finder", "cat": "Email", "url": "https://hunter.io/api-documentation/v2", "auth": "apiKey"},
587
+
588
+ # Real Estate
589
+ {"name": "Zillow", "desc": "Real estate data", "cat": "Real Estate", "url": "https://www.zillow.com/howto/api/", "auth": "apiKey"},
590
+ {"name": "Realtor.com", "desc": "Property listings", "cat": "Real Estate", "url": "https://www.realtor.com/api/", "auth": "apiKey"},
591
+ {"name": "Redfin", "desc": "Real estate search", "cat": "Real Estate", "url": "https://www.redfin.com/", "auth": "apiKey"},
592
+ {"name": "Estated", "desc": "Property data", "cat": "Real Estate", "url": "https://estated.com/developers/docs", "auth": "apiKey"},
593
+
594
+ # Environment
595
+ {"name": "OpenAQ", "desc": "Air quality data", "cat": "Environment", "url": "https://docs.openaq.org/", "auth": "None"},
596
+ {"name": "EPA", "desc": "Environmental data", "cat": "Environment", "url": "https://www.epa.gov/webservices", "auth": "None"},
597
+ {"name": "Breezometer", "desc": "Air quality and pollen", "cat": "Environment", "url": "https://docs.breezometer.com/", "auth": "apiKey"},
598
+ {"name": "AmbeeData", "desc": "Environmental data", "cat": "Environment", "url": "https://docs.ambeedata.com/", "auth": "apiKey"},
599
+
600
+ # Legal
601
+ {"name": "CourtListener", "desc": "Legal database", "cat": "Legal", "url": "https://www.courtlistener.com/api/", "auth": "apiKey"},
602
+ {"name": "Open States", "desc": "State legislation", "cat": "Government", "url": "https://docs.openstates.org/api-v3/", "auth": "apiKey"},
603
+ {"name": "Congress.gov", "desc": "US Congress data", "cat": "Government", "url": "https://api.congress.gov/", "auth": "apiKey"},
604
+
605
+ # Automotive
606
+ {"name": "NHTSA", "desc": "Vehicle safety data", "cat": "Automotive", "url": "https://vpic.nhtsa.dot.gov/api/", "auth": "None"},
607
+ {"name": "CarQuery", "desc": "Car database", "cat": "Automotive", "url": "http://www.carqueryapi.com/documentation/", "auth": "None"},
608
+ {"name": "VIN Decoder", "desc": "Vehicle identification", "cat": "Automotive", "url": "https://vpic.nhtsa.dot.gov/api/", "auth": "None"},
609
+ {"name": "FuelEconomy.gov", "desc": "Fuel economy data", "cat": "Automotive", "url": "https://www.fueleconomy.gov/feg/ws/", "auth": "None"},
610
+
611
+ # Pets
612
+ {"name": "TheDogAPI", "desc": "Dog breeds and images", "cat": "Animals", "url": "https://thedogapi.com/", "auth": "apiKey"},
613
+ {"name": "TheCatAPI", "desc": "Cat breeds and images", "cat": "Animals", "url": "https://thecatapi.com/", "auth": "apiKey"},
614
+ {"name": "Petfinder", "desc": "Pet adoption", "cat": "Animals", "url": "https://www.petfinder.com/developers/", "auth": "OAuth"},
615
+ {"name": "RandomFox", "desc": "Random fox images", "cat": "Animals", "url": "https://randomfox.ca/", "auth": "None"},
616
+ {"name": "Dog CEO", "desc": "Dog images", "cat": "Animals", "url": "https://dog.ceo/dog-api/", "auth": "None"},
617
+ {"name": "PlaceKitten", "desc": "Placeholder kittens", "cat": "Animals", "url": "https://placekitten.com/", "auth": "None"},
618
+ {"name": "HTTPCat", "desc": "HTTP status cats", "cat": "Animals", "url": "https://http.cat/", "auth": "None"},
619
+ {"name": "HTTPDog", "desc": "HTTP status dogs", "cat": "Animals", "url": "https://http.dog/", "auth": "None"},
620
+
621
+ # Placeholder and Test Data
622
+ {"name": "JSONPlaceholder", "desc": "Fake REST API", "cat": "Testing", "url": "https://jsonplaceholder.typicode.com/", "auth": "None"},
623
+ {"name": "Reqres", "desc": "Test API", "cat": "Testing", "url": "https://reqres.in/", "auth": "None"},
624
+ {"name": "RandomUser", "desc": "Random user generator", "cat": "Testing", "url": "https://randomuser.me/", "auth": "None"},
625
+ {"name": "Lorem Picsum", "desc": "Placeholder images", "cat": "Design", "url": "https://picsum.photos/", "auth": "None"},
626
+ {"name": "Placeholder.com", "desc": "Placeholder images", "cat": "Design", "url": "https://placeholder.com/", "auth": "None"},
627
+ {"name": "FakeStoreAPI", "desc": "E-commerce test data", "cat": "Testing", "url": "https://fakestoreapi.com/", "auth": "None"},
628
+ {"name": "MockAPI", "desc": "Mock API generator", "cat": "Testing", "url": "https://mockapi.io/", "auth": "apiKey"},
629
+ {"name": "Mockaroo", "desc": "Test data generator", "cat": "Testing", "url": "https://www.mockaroo.com/api/docs", "auth": "apiKey"},
630
+ {"name": "Faker", "desc": "Fake data generation", "cat": "Testing", "url": "https://fakerapi.it/", "auth": "None"},
631
+ {"name": "DummyJSON", "desc": "Test JSON data", "cat": "Testing", "url": "https://dummyjson.com/", "auth": "None"},
632
+
633
+ # E-commerce platforms
634
+ {"name": "Shopify", "desc": "E-commerce platform", "cat": "E-commerce", "url": "https://shopify.dev/docs/admin-api", "auth": "OAuth"},
635
+ {"name": "WooCommerce", "desc": "WordPress e-commerce", "cat": "E-commerce", "url": "https://woocommerce.github.io/woocommerce-rest-api-docs/", "auth": "OAuth"},
636
+ {"name": "BigCommerce", "desc": "E-commerce platform", "cat": "E-commerce", "url": "https://developer.bigcommerce.com/", "auth": "OAuth"},
637
+ {"name": "Magento", "desc": "E-commerce platform", "cat": "E-commerce", "url": "https://devdocs.magento.com/guides/v2.4/rest/bk-rest.html", "auth": "OAuth"},
638
+ {"name": "Saleor", "desc": "Headless commerce", "cat": "E-commerce", "url": "https://docs.saleor.io/docs/3.x/api-reference/", "auth": "OAuth"},
639
+ {"name": "PrestaShop", "desc": "E-commerce solution", "cat": "E-commerce", "url": "https://devdocs.prestashop.com/", "auth": "apiKey"},
640
+
641
+ # Messaging & Notifications
642
+ {"name": "Pushover", "desc": "Push notifications", "cat": "Communication", "url": "https://pushover.net/api", "auth": "apiKey"},
643
+ {"name": "Pushbullet", "desc": "Push notifications", "cat": "Communication", "url": "https://docs.pushbullet.com/", "auth": "OAuth"},
644
+ {"name": "OneSignal", "desc": "Push notifications", "cat": "Communication", "url": "https://documentation.onesignal.com/reference", "auth": "apiKey"},
645
+ {"name": "Firebase Cloud Messaging", "desc": "Cross-platform messaging", "cat": "Communication", "url": "https://firebase.google.com/docs/cloud-messaging", "auth": "apiKey"},
646
+ {"name": "SendGrid", "desc": "Email delivery", "cat": "Email", "url": "https://sendgrid.com/docs/api-reference/", "auth": "apiKey"},
647
+ {"name": "Postmark", "desc": "Transactional email", "cat": "Email", "url": "https://postmarkapp.com/developer", "auth": "apiKey"},
648
+ {"name": "Amazon SES", "desc": "Email service", "cat": "Email", "url": "https://docs.aws.amazon.com/ses/latest/DeveloperGuide/", "auth": "apiKey"},
649
+ {"name": "SparkPost", "desc": "Email delivery", "cat": "Email", "url": "https://developers.sparkpost.com/api/", "auth": "apiKey"},
650
+
651
+ # Authentication
652
+ {"name": "Auth0", "desc": "Identity platform", "cat": "Security", "url": "https://auth0.com/docs/api/", "auth": "OAuth"},
653
+ {"name": "Okta", "desc": "Identity management", "cat": "Security", "url": "https://developer.okta.com/docs/reference/", "auth": "OAuth"},
654
+ {"name": "Firebase Auth", "desc": "Authentication service", "cat": "Security", "url": "https://firebase.google.com/docs/auth", "auth": "apiKey"},
655
+ {"name": "Clerk", "desc": "User management", "cat": "Security", "url": "https://clerk.com/docs", "auth": "apiKey"},
656
+ {"name": "Supabase Auth", "desc": "Authentication", "cat": "Security", "url": "https://supabase.com/docs/guides/auth", "auth": "apiKey"},
657
+
658
+ # CMS & Content
659
+ {"name": "Contentful", "desc": "Headless CMS", "cat": "Content", "url": "https://www.contentful.com/developers/docs/references/content-delivery-api/", "auth": "apiKey"},
660
+ {"name": "Strapi", "desc": "Headless CMS", "cat": "Content", "url": "https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/rest-api.html", "auth": "apiKey"},
661
+ {"name": "Sanity", "desc": "Headless CMS", "cat": "Content", "url": "https://www.sanity.io/docs/http-api", "auth": "apiKey"},
662
+ {"name": "Ghost", "desc": "Publishing platform", "cat": "Content", "url": "https://ghost.org/docs/content-api/", "auth": "apiKey"},
663
+ {"name": "Prismic", "desc": "Headless CMS", "cat": "Content", "url": "https://prismic.io/docs/api", "auth": "apiKey"},
664
+ {"name": "DatoCMS", "desc": "Headless CMS", "cat": "Content", "url": "https://www.datocms.com/docs/content-delivery-api", "auth": "apiKey"},
665
+ {"name": "Cosmic", "desc": "Headless CMS", "cat": "Content", "url": "https://docs.cosmicjs.com/", "auth": "apiKey"},
666
+ {"name": "Directus", "desc": "Headless CMS", "cat": "Content", "url": "https://docs.directus.io/reference/introduction.html", "auth": "apiKey"},
667
+
668
+ # Search
669
+ {"name": "Algolia", "desc": "Search as a service", "cat": "Search", "url": "https://www.algolia.com/doc/api-reference/", "auth": "apiKey"},
670
+ {"name": "Elasticsearch", "desc": "Search engine", "cat": "Search", "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html", "auth": "apiKey"},
671
+ {"name": "MeiliSearch", "desc": "Search engine", "cat": "Search", "url": "https://docs.meilisearch.com/reference/api/", "auth": "apiKey"},
672
+ {"name": "Typesense", "desc": "Search engine", "cat": "Search", "url": "https://typesense.org/docs/", "auth": "apiKey"},
673
+ {"name": "DuckDuckGo", "desc": "Instant answers", "cat": "Search", "url": "https://duckduckgo.com/api", "auth": "None"},
674
+
675
+ # AI & ML Services
676
+ {"name": "OpenAI", "desc": "AI models", "cat": "AI", "url": "https://platform.openai.com/docs/api-reference", "auth": "apiKey"},
677
+ {"name": "Anthropic", "desc": "Claude AI", "cat": "AI", "url": "https://docs.anthropic.com/", "auth": "apiKey"},
678
+ {"name": "Hugging Face", "desc": "ML models", "cat": "AI", "url": "https://huggingface.co/docs/api-inference/", "auth": "apiKey"},
679
+ {"name": "Replicate", "desc": "ML model hosting", "cat": "AI", "url": "https://replicate.com/docs", "auth": "apiKey"},
680
+ {"name": "Stability AI", "desc": "Image generation", "cat": "AI", "url": "https://platform.stability.ai/docs/api-reference", "auth": "apiKey"},
681
+ {"name": "Cohere", "desc": "NLP models", "cat": "AI", "url": "https://docs.cohere.com/reference/about", "auth": "apiKey"},
682
+ {"name": "DeepL", "desc": "Translation", "cat": "Language", "url": "https://www.deepl.com/docs-api", "auth": "apiKey"},
683
+ {"name": "Assembly AI", "desc": "Speech to text", "cat": "AI", "url": "https://www.assemblyai.com/docs/", "auth": "apiKey"},
684
+ {"name": "ElevenLabs", "desc": "Text to speech", "cat": "AI", "url": "https://docs.elevenlabs.io/api-reference", "auth": "apiKey"},
685
+ {"name": "RunPod", "desc": "GPU cloud", "cat": "AI", "url": "https://docs.runpod.io/", "auth": "apiKey"},
686
+ ]
687
+
688
+ return more_apis
689
+
690
+ # Parse all sources
691
+ print("Parsing TonnyL Awesome APIs...")
692
+ tonny = parse_tonny_markdown()
693
+ print(f" Found {len(tonny)} APIs")
694
+
695
+ print("Parsing n0shake Public APIs...")
696
+ n0shake = parse_n0shake_markdown()
697
+ print(f" Found {len(n0shake)} APIs")
698
+
699
+ print("Generating additional APIs...")
700
+ more = generate_more_apis()
701
+ print(f" Found {len(more)} APIs")
702
+
703
+ # Combine all
704
+ all_raw = tonny + n0shake + more
705
+ print(f"\nTotal raw APIs: {len(all_raw)}")
706
+
707
+ # Convert to registry format and dedupe
708
+ new_apis = []
709
+ seen_ids = set()
710
+
711
+ for api in all_raw:
712
+ api_id = make_id(api.get('name', ''))
713
+
714
+ # Skip if already exists or duplicate
715
+ if api_id in existing_ids or api_id in seen_ids or not api_id:
716
+ continue
717
+
718
+ seen_ids.add(api_id)
719
+
720
+ entry = {
721
+ "id": api_id,
722
+ "name": api.get('name', api_id),
723
+ "description": api.get('desc', ''),
724
+ "category": api.get('cat', 'Uncategorized'),
725
+ "link": api.get('url', ''),
726
+ "auth": api.get('auth', 'None')
727
+ }
728
+ new_apis.append(entry)
729
+
730
+ print(f"New unique APIs after deduplication: {len(new_apis)}")
731
+
732
+ # Save to file
733
+ output_file = Path("/Users/gustavhemmingsson/Projects/apiclaw/data/night-expansion-02-26-06.json")
734
+ with open(output_file, 'w') as f:
735
+ json.dump(new_apis, f, indent=2)
736
+
737
+ print(f"\nSaved {len(new_apis)} new APIs to {output_file}")
738
+
739
+ # Create combined file
740
+ combined_apis = []
741
+ if existing_file.exists():
742
+ with open(existing_file) as f:
743
+ combined_apis.extend(json.load(f))
744
+ if night_26_file.exists():
745
+ with open(night_26_file) as f:
746
+ combined_apis.extend(json.load(f))
747
+ if night_26_v2_file.exists():
748
+ with open(night_26_v2_file) as f:
749
+ combined_apis.extend(json.load(f))
750
+ combined_apis.extend(new_apis)
751
+
752
+ combined_file = Path("/Users/gustavhemmingsson/Projects/apiclaw/data/combined-02-26.json")
753
+ with open(combined_file, 'w') as f:
754
+ json.dump(combined_apis, f, indent=2)
755
+
756
+ print(f"Combined total: {len(combined_apis)} APIs saved to {combined_file}")