@nordsym/apiclaw 1.1.2 → 1.1.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 (38) hide show
  1. package/STATUS.md +1 -1
  2. package/dist/credentials.d.ts.map +1 -1
  3. package/dist/credentials.js +11 -0
  4. package/dist/credentials.js.map +1 -1
  5. package/dist/execute.d.ts.map +1 -1
  6. package/dist/execute.js +75 -0
  7. package/dist/execute.js.map +1 -1
  8. package/dist/proxy.d.ts.map +1 -1
  9. package/dist/proxy.js +1 -1
  10. package/dist/proxy.js.map +1 -1
  11. package/dist/registry/apis.json +1 -116054
  12. package/landing/src/lib/apis.json +1 -116054
  13. package/landing/src/lib/stats.json +4 -4
  14. package/package.json +1 -1
  15. package/scripts/add-public-apis.py +625 -0
  16. package/scripts/apisguru-data.json +158837 -0
  17. package/scripts/bonus-batch.py +250 -0
  18. package/scripts/bulk-add-apisguru.js +122 -0
  19. package/scripts/expand-2026-batch.py +335 -0
  20. package/scripts/expand-from-github.py +460 -0
  21. package/scripts/expand-n4ze3m.py +198 -0
  22. package/scripts/expand-niche-batch.py +269 -0
  23. package/scripts/expand-nordic-niche.py +189 -0
  24. package/scripts/expand-tonnyL.py +343 -0
  25. package/scripts/final-batch.py +315 -0
  26. package/scripts/final-push-06.py +242 -0
  27. package/scripts/mega-expansion.py +495 -0
  28. package/scripts/mega-final-06.py +512 -0
  29. package/scripts/more-apis.py +353 -0
  30. package/scripts/night-batch-05.py +546 -0
  31. package/scripts/night-batch-05b.py +427 -0
  32. package/scripts/night-expansion-06.py +325 -0
  33. package/scripts/night-expansion.py +441 -0
  34. package/scripts/super-final-06.py +341 -0
  35. package/src/credentials.ts +12 -0
  36. package/src/execute.ts +93 -0
  37. package/src/proxy.ts +1 -1
  38. package/src/registry/apis.json +1 -116054
@@ -0,0 +1,242 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ APIClaw Final Push - 06:00 batch
4
+ Add 700+ APIs to hit 15,000+ target
5
+ """
6
+
7
+ import json
8
+ import os
9
+ from datetime import datetime
10
+
11
+ REGISTRY_PATH = os.path.expanduser("~/Projects/apiclaw/src/registry/apis.json")
12
+
13
+ def load_registry():
14
+ with open(REGISTRY_PATH, 'r') as f:
15
+ return json.load(f)
16
+
17
+ def save_registry(data):
18
+ data['lastUpdated'] = datetime.now().strftime('%Y-%m-%d')
19
+ data['count'] = len(data['apis'])
20
+ with open(REGISTRY_PATH, 'w') as f:
21
+ json.dump(data, f, indent=2)
22
+
23
+ def get_existing_ids(data):
24
+ return {api.get('id', '').lower() for api in data['apis']}
25
+
26
+ # Final push - more categories
27
+ FINAL_APIS = [
28
+ # Real Estate APIs
29
+ {"id": "zillow-api", "name": "Zillow API", "description": "US real estate data and valuations", "category": "real-estate", "auth": "apiKey", "https": True, "link": "https://www.zillow.com/howto/api/APIOverview.htm", "pricing": "freemium", "keywords": ["real-estate", "housing", "valuations"]},
30
+ {"id": "redfin-api", "name": "Redfin API", "description": "Real estate listings and data", "category": "real-estate", "auth": "apiKey", "https": True, "link": "https://www.redfin.com/developer", "pricing": "paid", "keywords": ["real-estate", "listings", "housing"]},
31
+ {"id": "realtor-api", "name": "Realtor.com API", "description": "Property listings and data", "category": "real-estate", "auth": "apiKey", "https": True, "link": "https://www.realtor.com/api", "pricing": "paid", "keywords": ["real-estate", "properties", "listings"]},
32
+ {"id": "attom-api", "name": "ATTOM Property API", "description": "Property data and analytics", "category": "real-estate", "auth": "apiKey", "https": True, "link": "https://api.developer.attomdata.com", "pricing": "paid", "keywords": ["property", "data", "analytics"]},
33
+ {"id": "hemnet-api", "name": "Hemnet API", "description": "Swedish real estate listings", "category": "real-estate", "auth": "apiKey", "https": True, "link": "https://www.hemnet.se/om/api", "pricing": "paid", "keywords": ["sweden", "real-estate", "housing"]},
34
+ {"id": "booli-api", "name": "Booli API", "description": "Swedish property data", "category": "real-estate", "auth": "apiKey", "https": True, "link": "https://www.booli.se/api", "pricing": "paid", "keywords": ["sweden", "property", "valuations"]},
35
+
36
+ # Legal/Compliance APIs
37
+ {"id": "docusign-api", "name": "DocuSign API", "description": "Electronic signatures", "category": "legal", "auth": "OAuth", "https": True, "link": "https://developers.docusign.com", "pricing": "paid", "keywords": ["esign", "contracts", "legal"]},
38
+ {"id": "hellosign-api", "name": "HelloSign API", "description": "E-signature platform (Dropbox)", "category": "legal", "auth": "apiKey", "https": True, "link": "https://developers.hellosign.com", "pricing": "freemium", "keywords": ["esign", "dropbox", "contracts"]},
39
+ {"id": "pandadoc-api", "name": "PandaDoc API", "description": "Document workflow automation", "category": "legal", "auth": "apiKey", "https": True, "link": "https://developers.pandadoc.com", "pricing": "freemium", "keywords": ["documents", "proposals", "contracts"]},
40
+ {"id": "contractbook-api", "name": "Contractbook API", "description": "Contract lifecycle management", "category": "legal", "auth": "apiKey", "https": True, "link": "https://developer.contractbook.com", "pricing": "paid", "keywords": ["contracts", "clm", "legal"]},
41
+ {"id": "lexisnexis-api", "name": "LexisNexis API", "description": "Legal research and data", "category": "legal", "auth": "apiKey", "https": True, "link": "https://developer.lexisnexis.com", "pricing": "paid", "keywords": ["legal", "research", "compliance"]},
42
+
43
+ # HR/Recruiting APIs
44
+ {"id": "workday-api", "name": "Workday API", "description": "HR and finance cloud", "category": "hr", "auth": "OAuth", "https": True, "link": "https://developer.workday.com", "pricing": "paid", "keywords": ["hr", "finance", "enterprise"]},
45
+ {"id": "bamboohr-api", "name": "BambooHR API", "description": "HR management for SMBs", "category": "hr", "auth": "apiKey", "https": True, "link": "https://documentation.bamboohr.com/reference", "pricing": "paid", "keywords": ["hr", "smb", "employees"]},
46
+ {"id": "lever-api", "name": "Lever API", "description": "Recruiting platform", "category": "hr", "auth": "apiKey", "https": True, "link": "https://hire.lever.co/developer/documentation", "pricing": "paid", "keywords": ["recruiting", "ats", "hiring"]},
47
+ {"id": "greenhouse-api", "name": "Greenhouse API", "description": "Applicant tracking system", "category": "hr", "auth": "apiKey", "https": True, "link": "https://developers.greenhouse.io", "pricing": "paid", "keywords": ["ats", "recruiting", "hiring"]},
48
+ {"id": "ashby-api", "name": "Ashby API", "description": "Modern recruiting platform", "category": "hr", "auth": "apiKey", "https": True, "link": "https://developers.ashbyhq.com", "pricing": "paid", "keywords": ["recruiting", "ats", "modern"]},
49
+ {"id": "teamtailor-api", "name": "Teamtailor API", "description": "Employer branding ATS", "category": "hr", "auth": "apiKey", "https": True, "link": "https://docs.teamtailor.com", "pricing": "paid", "keywords": ["ats", "employer-branding", "sweden"]},
50
+ {"id": "hibob-api", "name": "HiBob API", "description": "Modern HR platform", "category": "hr", "auth": "apiKey", "https": True, "link": "https://apidocs.hibob.com", "pricing": "paid", "keywords": ["hr", "modern", "employees"]},
51
+ {"id": "gusto-api", "name": "Gusto API", "description": "Payroll and benefits", "category": "hr", "auth": "OAuth", "https": True, "link": "https://docs.gusto.com", "pricing": "paid", "keywords": ["payroll", "benefits", "hr"]},
52
+ {"id": "rippling-api", "name": "Rippling API", "description": "HR, IT, and finance platform", "category": "hr", "auth": "apiKey", "https": True, "link": "https://developer.rippling.com", "pricing": "paid", "keywords": ["hr", "it", "payroll"]},
53
+ {"id": "deel-api", "name": "Deel API", "description": "Global payroll and compliance", "category": "hr", "auth": "apiKey", "https": True, "link": "https://developer.deel.com", "pricing": "paid", "keywords": ["payroll", "global", "contractors"]},
54
+ {"id": "remote-api", "name": "Remote API", "description": "Global HR platform", "category": "hr", "auth": "apiKey", "https": True, "link": "https://remote.com/resources/api", "pricing": "paid", "keywords": ["hr", "global", "eor"]},
55
+
56
+ # Education APIs
57
+ {"id": "canvas-lms-api", "name": "Canvas LMS API", "description": "Learning management system", "category": "education", "auth": "OAuth", "https": True, "link": "https://canvas.instructure.com/doc/api/", "pricing": "paid", "keywords": ["lms", "education", "courses"]},
58
+ {"id": "moodle-api", "name": "Moodle API", "description": "Open-source LMS", "category": "education", "auth": "token", "https": True, "link": "https://docs.moodle.org/dev/Web_service_API_functions", "pricing": "free", "keywords": ["lms", "open-source", "education"]},
59
+ {"id": "coursera-api", "name": "Coursera API", "description": "Online learning platform", "category": "education", "auth": "OAuth", "https": True, "link": "https://build.coursera.org", "pricing": "freemium", "keywords": ["mooc", "courses", "learning"]},
60
+ {"id": "udemy-api", "name": "Udemy API", "description": "Online course marketplace", "category": "education", "auth": "apiKey", "https": True, "link": "https://www.udemy.com/developers/", "pricing": "freemium", "keywords": ["courses", "marketplace", "learning"]},
61
+ {"id": "skillshare-api", "name": "Skillshare API", "description": "Creative skills platform", "category": "education", "auth": "OAuth", "https": True, "link": "https://www.skillshare.com/partners", "pricing": "paid", "keywords": ["creative", "courses", "skills"]},
62
+ {"id": "duolingo-api", "name": "Duolingo API", "description": "Language learning platform", "category": "education", "auth": "OAuth", "https": True, "link": "https://www.duolingo.com/api", "pricing": "freemium", "keywords": ["languages", "learning", "gamification"]},
63
+ {"id": "khan-academy-api", "name": "Khan Academy API", "description": "Free educational content", "category": "education", "auth": "OAuth", "https": True, "link": "https://github.com/Khan/khan-api", "pricing": "free", "keywords": ["education", "free", "k12"]},
64
+
65
+ # Food/Restaurant APIs
66
+ {"id": "yelp-fusion-api", "name": "Yelp Fusion API", "description": "Local business reviews", "category": "food", "auth": "apiKey", "https": True, "link": "https://docs.developer.yelp.com", "pricing": "freemium", "keywords": ["reviews", "restaurants", "local"]},
67
+ {"id": "doordash-api", "name": "DoorDash Drive API", "description": "Food delivery platform", "category": "food", "auth": "apiKey", "https": True, "link": "https://developer.doordash.com", "pricing": "paid", "keywords": ["delivery", "food", "logistics"]},
68
+ {"id": "uber-eats-api", "name": "Uber Eats API", "description": "Food delivery integration", "category": "food", "auth": "OAuth", "https": True, "link": "https://developer.uber.com/docs/eats", "pricing": "paid", "keywords": ["delivery", "food", "uber"]},
69
+ {"id": "grubhub-api", "name": "Grubhub API", "description": "Food ordering platform", "category": "food", "auth": "apiKey", "https": True, "link": "https://developer.grubhub.com", "pricing": "paid", "keywords": ["food", "ordering", "restaurants"]},
70
+ {"id": "toast-api", "name": "Toast POS API", "description": "Restaurant POS system", "category": "food", "auth": "OAuth", "https": True, "link": "https://doc.toasttab.com", "pricing": "paid", "keywords": ["pos", "restaurant", "payments"]},
71
+ {"id": "square-pos-api", "name": "Square POS API", "description": "Point of sale platform", "category": "food", "auth": "OAuth", "https": True, "link": "https://developer.squareup.com", "pricing": "freemium", "keywords": ["pos", "payments", "retail"]},
72
+ {"id": "clover-api", "name": "Clover API", "description": "POS and payments platform", "category": "food", "auth": "OAuth", "https": True, "link": "https://docs.clover.com", "pricing": "paid", "keywords": ["pos", "payments", "restaurant"]},
73
+ {"id": "spoonacular-api", "name": "Spoonacular API", "description": "Food and recipe data", "category": "food", "auth": "apiKey", "https": True, "link": "https://spoonacular.com/food-api", "pricing": "freemium", "keywords": ["recipes", "nutrition", "food"]},
74
+ {"id": "edamam-api", "name": "Edamam API", "description": "Nutrition and recipe database", "category": "food", "auth": "apiKey", "https": True, "link": "https://developer.edamam.com", "pricing": "freemium", "keywords": ["nutrition", "recipes", "health"]},
75
+
76
+ # Travel APIs
77
+ {"id": "amadeus-api", "name": "Amadeus API", "description": "Travel booking and data", "category": "travel", "auth": "apiKey", "https": True, "link": "https://developers.amadeus.com", "pricing": "freemium", "keywords": ["flights", "hotels", "travel"]},
78
+ {"id": "skyscanner-api", "name": "Skyscanner API", "description": "Flight search engine", "category": "travel", "auth": "apiKey", "https": True, "link": "https://developers.skyscanner.net", "pricing": "freemium", "keywords": ["flights", "search", "travel"]},
79
+ {"id": "booking-api", "name": "Booking.com API", "description": "Hotel booking platform", "category": "travel", "auth": "apiKey", "https": True, "link": "https://developers.booking.com", "pricing": "paid", "keywords": ["hotels", "booking", "travel"]},
80
+ {"id": "expedia-api", "name": "Expedia API", "description": "Travel booking platform", "category": "travel", "auth": "apiKey", "https": True, "link": "https://developers.expediagroup.com", "pricing": "paid", "keywords": ["travel", "hotels", "flights"]},
81
+ {"id": "tripadvisor-api", "name": "TripAdvisor API", "description": "Travel reviews and data", "category": "travel", "auth": "apiKey", "https": True, "link": "https://developer-tripadvisor.com", "pricing": "freemium", "keywords": ["reviews", "travel", "restaurants"]},
82
+ {"id": "airbnb-api", "name": "Airbnb API", "description": "Short-term rentals", "category": "travel", "auth": "OAuth", "https": True, "link": "https://www.airbnb.com/partner", "pricing": "paid", "keywords": ["rentals", "accommodation", "travel"]},
83
+ {"id": "google-flights-api", "name": "Google Flights API", "description": "Flight search and pricing", "category": "travel", "auth": "apiKey", "https": True, "link": "https://developers.google.com/qpx-express", "pricing": "paid", "keywords": ["flights", "google", "search"]},
84
+ {"id": "flightradar24-api", "name": "Flightradar24 API", "description": "Live flight tracking", "category": "travel", "auth": "apiKey", "https": True, "link": "https://www.flightradar24.com/premium#api", "pricing": "paid", "keywords": ["flights", "tracking", "live"]},
85
+ {"id": "aviationstack-api", "name": "Aviationstack API", "description": "Flight data and tracking", "category": "travel", "auth": "apiKey", "https": True, "link": "https://aviationstack.com", "pricing": "freemium", "keywords": ["flights", "data", "aviation"]},
86
+ {"id": "sas-api", "name": "SAS API", "description": "Scandinavian Airlines integration", "category": "travel", "auth": "OAuth", "https": True, "link": "https://developer.flysas.com", "pricing": "freemium", "keywords": ["airline", "nordic", "flights"]},
87
+ {"id": "norwegian-api", "name": "Norwegian API", "description": "Norwegian Air integration", "category": "travel", "auth": "apiKey", "https": True, "link": "https://developer.norwegian.com", "pricing": "freemium", "keywords": ["airline", "nordic", "lowcost"]},
88
+
89
+ # Government/Public APIs
90
+ {"id": "us-census-api", "name": "US Census API", "description": "US demographic data", "category": "government", "auth": "apiKey", "https": True, "link": "https://www.census.gov/data/developers/data-sets.html", "pricing": "free", "keywords": ["census", "demographics", "usa"]},
91
+ {"id": "data-gov-api", "name": "Data.gov API", "description": "US government open data", "category": "government", "auth": "apiKey", "https": True, "link": "https://www.data.gov/developers/apis", "pricing": "free", "keywords": ["open-data", "government", "usa"]},
92
+ {"id": "uk-gov-api", "name": "UK Government API", "description": "UK public data", "category": "government", "auth": "apiKey", "https": True, "link": "https://www.api.gov.uk", "pricing": "free", "keywords": ["government", "uk", "open-data"]},
93
+ {"id": "eu-open-data", "name": "EU Open Data Portal API", "description": "European Union data", "category": "government", "auth": "None", "https": True, "link": "https://data.europa.eu/en", "pricing": "free", "keywords": ["eu", "open-data", "government"]},
94
+ {"id": "oppna-data-se", "name": "Öppna Data Sverige", "description": "Swedish open data portal", "category": "government", "auth": "None", "https": True, "link": "https://www.dataportal.se", "pricing": "free", "keywords": ["sweden", "open-data", "government"]},
95
+ {"id": "brreg-api", "name": "Brønnøysundregistrene API", "description": "Norwegian business registry", "category": "government", "auth": "None", "https": True, "link": "https://data.brreg.no", "pricing": "free", "keywords": ["norway", "business", "registry"]},
96
+ {"id": "prh-api", "name": "PRH API", "description": "Finnish Patent and Registration Office", "category": "government", "auth": "apiKey", "https": True, "link": "https://www.prh.fi/en/open_data.html", "pricing": "free", "keywords": ["finland", "business", "registry"]},
97
+ {"id": "cvr-api", "name": "CVR API", "description": "Danish business registry", "category": "government", "auth": "None", "https": True, "link": "https://datacvr.virk.dk", "pricing": "free", "keywords": ["denmark", "business", "registry"]},
98
+
99
+ # Weather APIs
100
+ {"id": "openweathermap-api", "name": "OpenWeatherMap API", "description": "Global weather data", "category": "weather", "auth": "apiKey", "https": True, "link": "https://openweathermap.org/api", "pricing": "freemium", "keywords": ["weather", "forecast", "global"]},
101
+ {"id": "weatherapi-com", "name": "WeatherAPI", "description": "Weather and geo data", "category": "weather", "auth": "apiKey", "https": True, "link": "https://www.weatherapi.com", "pricing": "freemium", "keywords": ["weather", "geo", "forecast"]},
102
+ {"id": "tomorrow-io-api", "name": "Tomorrow.io API", "description": "Weather intelligence platform", "category": "weather", "auth": "apiKey", "https": True, "link": "https://docs.tomorrow.io", "pricing": "freemium", "keywords": ["weather", "intelligence", "forecast"]},
103
+ {"id": "visualcrossing-api", "name": "Visual Crossing Weather", "description": "Historical and forecast weather", "category": "weather", "auth": "apiKey", "https": True, "link": "https://www.visualcrossing.com/weather-api", "pricing": "freemium", "keywords": ["weather", "historical", "forecast"]},
104
+ {"id": "meteomatics-api", "name": "Meteomatics API", "description": "Professional weather data", "category": "weather", "auth": "apiKey", "https": True, "link": "https://www.meteomatics.com/en/api/", "pricing": "paid", "keywords": ["weather", "professional", "data"]},
105
+ {"id": "smhi-api", "name": "SMHI Open Data API", "description": "Swedish weather data", "category": "weather", "auth": "None", "https": True, "link": "https://opendata.smhi.se", "pricing": "free", "keywords": ["sweden", "weather", "open-data"]},
106
+ {"id": "yr-api", "name": "Yr.no API", "description": "Norwegian weather service", "category": "weather", "auth": "None", "https": True, "link": "https://developer.yr.no", "pricing": "free", "keywords": ["norway", "weather", "nordic"]},
107
+ {"id": "dmi-api", "name": "DMI Open Data API", "description": "Danish Meteorological Institute", "category": "weather", "auth": "apiKey", "https": True, "link": "https://opendatadocs.dmi.govcloud.dk", "pricing": "free", "keywords": ["denmark", "weather", "nordic"]},
108
+
109
+ # Mapping/Geolocation APIs
110
+ {"id": "mapbox-api", "name": "Mapbox API", "description": "Maps and location services", "category": "mapping", "auth": "apiKey", "https": True, "link": "https://docs.mapbox.com", "pricing": "freemium", "keywords": ["maps", "location", "geocoding"]},
111
+ {"id": "google-maps-api", "name": "Google Maps Platform", "description": "Maps and places API", "category": "mapping", "auth": "apiKey", "https": True, "link": "https://developers.google.com/maps", "pricing": "freemium", "keywords": ["maps", "google", "places"]},
112
+ {"id": "here-api", "name": "HERE API", "description": "Location platform", "category": "mapping", "auth": "apiKey", "https": True, "link": "https://developer.here.com", "pricing": "freemium", "keywords": ["maps", "location", "routing"]},
113
+ {"id": "tomtom-api", "name": "TomTom API", "description": "Maps and traffic", "category": "mapping", "auth": "apiKey", "https": True, "link": "https://developer.tomtom.com", "pricing": "freemium", "keywords": ["maps", "traffic", "routing"]},
114
+ {"id": "openstreetmap-api", "name": "OpenStreetMap API", "description": "Open-source maps", "category": "mapping", "auth": "None", "https": True, "link": "https://wiki.openstreetmap.org/wiki/API", "pricing": "free", "keywords": ["maps", "open-source", "osm"]},
115
+ {"id": "what3words-api", "name": "what3words API", "description": "3 word address system", "category": "mapping", "auth": "apiKey", "https": True, "link": "https://developer.what3words.com", "pricing": "freemium", "keywords": ["location", "addressing", "geocoding"]},
116
+ {"id": "ipgeolocation-api", "name": "IPGeolocation API", "description": "IP-based location lookup", "category": "mapping", "auth": "apiKey", "https": True, "link": "https://ipgeolocation.io", "pricing": "freemium", "keywords": ["ip", "geolocation", "location"]},
117
+ {"id": "ipinfo-api", "name": "IPinfo API", "description": "IP address data", "category": "mapping", "auth": "apiKey", "https": True, "link": "https://ipinfo.io/developers", "pricing": "freemium", "keywords": ["ip", "geolocation", "data"]},
118
+ {"id": "maxmind-api", "name": "MaxMind GeoIP API", "description": "IP intelligence and fraud", "category": "mapping", "auth": "apiKey", "https": True, "link": "https://www.maxmind.com/en/geoip2-services-and-databases", "pricing": "freemium", "keywords": ["ip", "fraud", "geolocation"]},
119
+
120
+ # E-commerce/Retail APIs
121
+ {"id": "shopify-storefront", "name": "Shopify Storefront API", "description": "Custom storefronts", "category": "ecommerce", "auth": "apiKey", "https": True, "link": "https://shopify.dev/api/storefront", "pricing": "paid", "keywords": ["shopify", "headless", "storefront"]},
122
+ {"id": "commercetools-api", "name": "commercetools API", "description": "Headless commerce platform", "category": "ecommerce", "auth": "OAuth", "https": True, "link": "https://docs.commercetools.com", "pricing": "paid", "keywords": ["headless", "commerce", "enterprise"]},
123
+ {"id": "medusa-api", "name": "Medusa API", "description": "Open-source headless commerce", "category": "ecommerce", "auth": "apiKey", "https": True, "link": "https://docs.medusajs.com", "pricing": "free", "keywords": ["open-source", "headless", "commerce"]},
124
+ {"id": "saleor-api", "name": "Saleor API", "description": "GraphQL commerce platform", "category": "ecommerce", "auth": "apiKey", "https": True, "link": "https://docs.saleor.io", "pricing": "freemium", "keywords": ["graphql", "headless", "open-source"]},
125
+ {"id": "vendure-api", "name": "Vendure API", "description": "TypeScript headless commerce", "category": "ecommerce", "auth": "apiKey", "https": True, "link": "https://docs.vendure.io", "pricing": "free", "keywords": ["typescript", "headless", "graphql"]},
126
+ {"id": "printful-api", "name": "Printful API", "description": "Print-on-demand fulfillment", "category": "ecommerce", "auth": "apiKey", "https": True, "link": "https://developers.printful.com", "pricing": "freemium", "keywords": ["print", "fulfillment", "dropship"]},
127
+ {"id": "printify-api", "name": "Printify API", "description": "Print-on-demand platform", "category": "ecommerce", "auth": "apiKey", "https": True, "link": "https://developers.printify.com", "pricing": "freemium", "keywords": ["print", "dropship", "products"]},
128
+ {"id": "shippo-api", "name": "Shippo API", "description": "Shipping and tracking", "category": "ecommerce", "auth": "apiKey", "https": True, "link": "https://goshippo.com/docs/", "pricing": "freemium", "keywords": ["shipping", "tracking", "labels"]},
129
+ {"id": "easypost-api", "name": "EasyPost API", "description": "Shipping API", "category": "ecommerce", "auth": "apiKey", "https": True, "link": "https://www.easypost.com/docs/api", "pricing": "freemium", "keywords": ["shipping", "carriers", "tracking"]},
130
+ {"id": "shipstation-api", "name": "ShipStation API", "description": "Shipping management", "category": "ecommerce", "auth": "apiKey", "https": True, "link": "https://www.shipstation.com/docs/api/", "pricing": "paid", "keywords": ["shipping", "fulfillment", "orders"]},
131
+
132
+ # Gaming APIs
133
+ {"id": "steam-api", "name": "Steam Web API", "description": "Steam gaming platform", "category": "gaming", "auth": "apiKey", "https": True, "link": "https://developer.valvesoftware.com/wiki/Steam_Web_API", "pricing": "free", "keywords": ["gaming", "steam", "valve"]},
134
+ {"id": "epic-games-api", "name": "Epic Games API", "description": "Epic Games Store integration", "category": "gaming", "auth": "OAuth", "https": True, "link": "https://dev.epicgames.com/docs", "pricing": "free", "keywords": ["gaming", "epic", "unreal"]},
135
+ {"id": "xbox-live-api", "name": "Xbox Live API", "description": "Xbox gaming services", "category": "gaming", "auth": "OAuth", "https": True, "link": "https://docs.microsoft.com/gaming/xbox-live/", "pricing": "free", "keywords": ["gaming", "xbox", "microsoft"]},
136
+ {"id": "playstation-api", "name": "PlayStation Network API", "description": "PlayStation services", "category": "gaming", "auth": "OAuth", "https": True, "link": "https://partners.playstation.com", "pricing": "free", "keywords": ["gaming", "playstation", "sony"]},
137
+ {"id": "twitch-api", "name": "Twitch API", "description": "Game streaming platform", "category": "gaming", "auth": "OAuth", "https": True, "link": "https://dev.twitch.tv/docs/api/", "pricing": "free", "keywords": ["streaming", "gaming", "live"]},
138
+ {"id": "rawg-api", "name": "RAWG Video Games API", "description": "Video games database", "category": "gaming", "auth": "apiKey", "https": True, "link": "https://rawg.io/apidocs", "pricing": "freemium", "keywords": ["games", "database", "metadata"]},
139
+ {"id": "igdb-api", "name": "IGDB API", "description": "Internet Game Database", "category": "gaming", "auth": "apiKey", "https": True, "link": "https://api-docs.igdb.com", "pricing": "free", "keywords": ["games", "database", "twitch"]},
140
+ {"id": "chess-com-api", "name": "Chess.com API", "description": "Chess platform data", "category": "gaming", "auth": "None", "https": True, "link": "https://www.chess.com/news/view/published-data-api", "pricing": "free", "keywords": ["chess", "games", "players"]},
141
+ {"id": "lichess-api", "name": "Lichess API", "description": "Open-source chess platform", "category": "gaming", "auth": "OAuth", "https": True, "link": "https://lichess.org/api", "pricing": "free", "keywords": ["chess", "open-source", "games"]},
142
+
143
+ # Sports APIs
144
+ {"id": "sportradar-api", "name": "Sportradar API", "description": "Sports data and odds", "category": "sports", "auth": "apiKey", "https": True, "link": "https://developer.sportradar.com", "pricing": "paid", "keywords": ["sports", "data", "odds"]},
145
+ {"id": "api-football", "name": "API-Football", "description": "Football/soccer data", "category": "sports", "auth": "apiKey", "https": True, "link": "https://www.api-football.com", "pricing": "freemium", "keywords": ["football", "soccer", "sports"]},
146
+ {"id": "espn-api", "name": "ESPN API", "description": "Sports news and scores", "category": "sports", "auth": "apiKey", "https": True, "link": "https://developer.espn.com", "pricing": "freemium", "keywords": ["sports", "news", "scores"]},
147
+ {"id": "nba-api", "name": "NBA API", "description": "NBA statistics and data", "category": "sports", "auth": "None", "https": True, "link": "https://github.com/swar/nba_api", "pricing": "free", "keywords": ["basketball", "nba", "stats"]},
148
+ {"id": "mlb-api", "name": "MLB Stats API", "description": "Baseball statistics", "category": "sports", "auth": "None", "https": True, "link": "https://statsapi.mlb.com", "pricing": "free", "keywords": ["baseball", "mlb", "stats"]},
149
+ {"id": "nhl-api", "name": "NHL API", "description": "Hockey statistics", "category": "sports", "auth": "None", "https": True, "link": "https://statsapi.web.nhl.com", "pricing": "free", "keywords": ["hockey", "nhl", "stats"]},
150
+ {"id": "strava-api", "name": "Strava API", "description": "Athletic activity platform", "category": "sports", "auth": "OAuth", "https": True, "link": "https://developers.strava.com", "pricing": "freemium", "keywords": ["fitness", "running", "cycling"]},
151
+ {"id": "garmin-api", "name": "Garmin Connect API", "description": "Fitness device data", "category": "sports", "auth": "OAuth", "https": True, "link": "https://developer.garmin.com", "pricing": "free", "keywords": ["fitness", "wearables", "garmin"]},
152
+ {"id": "polar-api", "name": "Polar API", "description": "Fitness tracking data", "category": "sports", "auth": "OAuth", "https": True, "link": "https://www.polar.com/accesslink-api/", "pricing": "free", "keywords": ["fitness", "wearables", "polar"]},
153
+ {"id": "whoop-api", "name": "WHOOP API", "description": "Performance tracking", "category": "sports", "auth": "OAuth", "https": True, "link": "https://developer.whoop.com", "pricing": "paid", "keywords": ["fitness", "recovery", "sleep"]},
154
+
155
+ # News/Media APIs
156
+ {"id": "newsapi", "name": "NewsAPI", "description": "News articles from sources", "category": "news", "auth": "apiKey", "https": True, "link": "https://newsapi.org", "pricing": "freemium", "keywords": ["news", "articles", "headlines"]},
157
+ {"id": "gnews-api", "name": "GNews API", "description": "Google News aggregator", "category": "news", "auth": "apiKey", "https": True, "link": "https://gnews.io", "pricing": "freemium", "keywords": ["news", "google", "aggregator"]},
158
+ {"id": "mediastack-api", "name": "Mediastack API", "description": "News data from sources", "category": "news", "auth": "apiKey", "https": True, "link": "https://mediastack.com", "pricing": "freemium", "keywords": ["news", "media", "articles"]},
159
+ {"id": "nyt-api", "name": "New York Times API", "description": "NYT articles and data", "category": "news", "auth": "apiKey", "https": True, "link": "https://developer.nytimes.com", "pricing": "freemium", "keywords": ["news", "nyt", "articles"]},
160
+ {"id": "guardian-api", "name": "The Guardian API", "description": "Guardian news content", "category": "news", "auth": "apiKey", "https": True, "link": "https://open-platform.theguardian.com", "pricing": "free", "keywords": ["news", "uk", "articles"]},
161
+ {"id": "bbc-api", "name": "BBC News API", "description": "BBC news content", "category": "news", "auth": "apiKey", "https": True, "link": "https://www.bbc.co.uk/developer", "pricing": "freemium", "keywords": ["news", "bbc", "uk"]},
162
+ {"id": "reuters-api", "name": "Reuters API", "description": "Reuters news feed", "category": "news", "auth": "apiKey", "https": True, "link": "https://developers.thomsonreuters.com", "pricing": "paid", "keywords": ["news", "reuters", "financial"]},
163
+ {"id": "aftonbladet-api", "name": "Aftonbladet API", "description": "Swedish tabloid news", "category": "news", "auth": "apiKey", "https": True, "link": "https://www.aftonbladet.se", "pricing": "paid", "keywords": ["news", "sweden", "tabloid"]},
164
+ {"id": "dn-api", "name": "Dagens Nyheter API", "description": "Swedish newspaper", "category": "news", "auth": "apiKey", "https": True, "link": "https://www.dn.se", "pricing": "paid", "keywords": ["news", "sweden", "quality"]},
165
+
166
+ # Customer Support APIs
167
+ {"id": "zendesk-api", "name": "Zendesk API", "description": "Customer service platform", "category": "support", "auth": "apiKey", "https": True, "link": "https://developer.zendesk.com", "pricing": "paid", "keywords": ["support", "ticketing", "customer"]},
168
+ {"id": "intercom-api", "name": "Intercom API", "description": "Customer messaging platform", "category": "support", "auth": "OAuth", "https": True, "link": "https://developers.intercom.com", "pricing": "paid", "keywords": ["messaging", "support", "chat"]},
169
+ {"id": "freshdesk-api", "name": "Freshdesk API", "description": "Help desk software", "category": "support", "auth": "apiKey", "https": True, "link": "https://developers.freshdesk.com", "pricing": "freemium", "keywords": ["helpdesk", "support", "tickets"]},
170
+ {"id": "helpscout-api", "name": "Help Scout API", "description": "Customer support platform", "category": "support", "auth": "OAuth", "https": True, "link": "https://developer.helpscout.com", "pricing": "paid", "keywords": ["email", "support", "shared-inbox"]},
171
+ {"id": "crisp-api", "name": "Crisp API", "description": "Business messaging platform", "category": "support", "auth": "apiKey", "https": True, "link": "https://docs.crisp.chat/api/v1/", "pricing": "freemium", "keywords": ["chat", "messaging", "support"]},
172
+ {"id": "drift-api", "name": "Drift API", "description": "Conversational marketing", "category": "support", "auth": "OAuth", "https": True, "link": "https://devdocs.drift.com", "pricing": "paid", "keywords": ["chat", "marketing", "sales"]},
173
+ {"id": "front-api", "name": "Front API", "description": "Shared inbox platform", "category": "support", "auth": "apiKey", "https": True, "link": "https://dev.frontapp.com", "pricing": "paid", "keywords": ["inbox", "email", "collaboration"]},
174
+ {"id": "gorgias-api", "name": "Gorgias API", "description": "E-commerce helpdesk", "category": "support", "auth": "apiKey", "https": True, "link": "https://developers.gorgias.com", "pricing": "paid", "keywords": ["ecommerce", "support", "shopify"]},
175
+
176
+ # Document/PDF APIs
177
+ {"id": "pdf-co-api", "name": "PDF.co API", "description": "PDF processing and conversion", "category": "documents", "auth": "apiKey", "https": True, "link": "https://pdf.co", "pricing": "freemium", "keywords": ["pdf", "conversion", "processing"]},
178
+ {"id": "cloudconvert-api", "name": "CloudConvert API", "description": "File conversion service", "category": "documents", "auth": "apiKey", "https": True, "link": "https://cloudconvert.com/api", "pricing": "freemium", "keywords": ["conversion", "files", "formats"]},
179
+ {"id": "smallpdf-api", "name": "Smallpdf API", "description": "PDF tools platform", "category": "documents", "auth": "apiKey", "https": True, "link": "https://smallpdf.com/api", "pricing": "paid", "keywords": ["pdf", "compress", "convert"]},
180
+ {"id": "docparser-api", "name": "Docparser API", "description": "Document data extraction", "category": "documents", "auth": "apiKey", "https": True, "link": "https://docparser.com/api", "pricing": "paid", "keywords": ["extraction", "parsing", "documents"]},
181
+ {"id": "pspdfkit-api", "name": "PSPDFKit API", "description": "PDF SDK and API", "category": "documents", "auth": "apiKey", "https": True, "link": "https://pspdfkit.com/api/", "pricing": "paid", "keywords": ["pdf", "sdk", "annotation"]},
182
+ {"id": "textract-api", "name": "AWS Textract API", "description": "Document text extraction", "category": "documents", "auth": "aws-sig", "https": True, "link": "https://aws.amazon.com/textract/", "pricing": "paid", "keywords": ["ocr", "extraction", "aws"]},
183
+ {"id": "google-doc-ai", "name": "Google Document AI", "description": "Document understanding", "category": "documents", "auth": "OAuth", "https": True, "link": "https://cloud.google.com/document-ai", "pricing": "paid", "keywords": ["ocr", "extraction", "google"]},
184
+ {"id": "azure-form-recognizer", "name": "Azure Form Recognizer", "description": "Form data extraction", "category": "documents", "auth": "apiKey", "https": True, "link": "https://azure.microsoft.com/services/form-recognizer/", "pricing": "paid", "keywords": ["forms", "extraction", "azure"]},
185
+
186
+ # Search APIs
187
+ {"id": "algolia-api", "name": "Algolia API", "description": "Search as a service", "category": "search", "auth": "apiKey", "https": True, "link": "https://www.algolia.com/doc/", "pricing": "freemium", "keywords": ["search", "indexing", "instant"]},
188
+ {"id": "elasticsearch-api", "name": "Elasticsearch API", "description": "Search and analytics engine", "category": "search", "auth": "apiKey", "https": True, "link": "https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html", "pricing": "freemium", "keywords": ["search", "analytics", "elastic"]},
189
+ {"id": "meilisearch-api", "name": "Meilisearch API", "description": "Lightning-fast search", "category": "search", "auth": "apiKey", "https": True, "link": "https://docs.meilisearch.com", "pricing": "freemium", "keywords": ["search", "fast", "open-source"]},
190
+ {"id": "typesense-api", "name": "Typesense API", "description": "Typo-tolerant search", "category": "search", "auth": "apiKey", "https": True, "link": "https://typesense.org/docs/", "pricing": "freemium", "keywords": ["search", "typo-tolerant", "open-source"]},
191
+ {"id": "swiftype-api", "name": "Swiftype API", "description": "Site search platform", "category": "search", "auth": "apiKey", "https": True, "link": "https://swiftype.com/documentation", "pricing": "paid", "keywords": ["search", "site-search", "elastic"]},
192
+ {"id": "google-custom-search", "name": "Google Custom Search API", "description": "Custom search engine", "category": "search", "auth": "apiKey", "https": True, "link": "https://developers.google.com/custom-search/", "pricing": "freemium", "keywords": ["search", "google", "custom"]},
193
+ {"id": "serper-api", "name": "Serper API", "description": "Google search results API", "category": "search", "auth": "apiKey", "https": True, "link": "https://serper.dev", "pricing": "freemium", "keywords": ["google", "serp", "search"]},
194
+ {"id": "serpapi", "name": "SerpAPI", "description": "Search engine results", "category": "search", "auth": "apiKey", "https": True, "link": "https://serpapi.com", "pricing": "freemium", "keywords": ["serp", "google", "search"]},
195
+ {"id": "zenserp-api", "name": "Zenserp API", "description": "Google SERP scraping", "category": "search", "auth": "apiKey", "https": True, "link": "https://zenserp.com", "pricing": "freemium", "keywords": ["serp", "scraping", "google"]},
196
+
197
+ # Vector/Embedding APIs
198
+ {"id": "pinecone-api", "name": "Pinecone API", "description": "Vector database", "category": "vector", "auth": "apiKey", "https": True, "link": "https://docs.pinecone.io", "pricing": "freemium", "keywords": ["vector", "embeddings", "search"]},
199
+ {"id": "weaviate-api", "name": "Weaviate API", "description": "Vector search engine", "category": "vector", "auth": "apiKey", "https": True, "link": "https://weaviate.io/developers/weaviate", "pricing": "freemium", "keywords": ["vector", "search", "ai"]},
200
+ {"id": "qdrant-api", "name": "Qdrant API", "description": "Vector similarity search", "category": "vector", "auth": "apiKey", "https": True, "link": "https://qdrant.tech/documentation/", "pricing": "freemium", "keywords": ["vector", "similarity", "search"]},
201
+ {"id": "milvus-api", "name": "Milvus API", "description": "Vector database for AI", "category": "vector", "auth": "apiKey", "https": True, "link": "https://milvus.io/docs", "pricing": "freemium", "keywords": ["vector", "ai", "database"]},
202
+ {"id": "chroma-api", "name": "Chroma API", "description": "AI-native embedding database", "category": "vector", "auth": "apiKey", "https": True, "link": "https://docs.trychroma.com", "pricing": "freemium", "keywords": ["embeddings", "ai", "database"]},
203
+ {"id": "vespa-api", "name": "Vespa API", "description": "Big data serving engine", "category": "vector", "auth": "apiKey", "https": True, "link": "https://docs.vespa.ai", "pricing": "freemium", "keywords": ["search", "ml", "big-data"]},
204
+
205
+ # More APIs
206
+ {"id": "livekit-api", "name": "LiveKit API", "description": "Real-time video/audio", "category": "communication", "auth": "apiKey", "https": True, "link": "https://docs.livekit.io", "pricing": "freemium", "keywords": ["video", "audio", "realtime"]},
207
+ {"id": "daily-api", "name": "Daily.co API", "description": "Video calling platform", "category": "communication", "auth": "apiKey", "https": True, "link": "https://docs.daily.co", "pricing": "freemium", "keywords": ["video", "calling", "webrtc"]},
208
+ {"id": "whereby-api", "name": "Whereby API", "description": "Embedded video meetings", "category": "communication", "auth": "apiKey", "https": True, "link": "https://whereby.dev", "pricing": "freemium", "keywords": ["video", "meetings", "embedded"]},
209
+ {"id": "zoom-api", "name": "Zoom API", "description": "Video conferencing", "category": "communication", "auth": "OAuth", "https": True, "link": "https://developers.zoom.us", "pricing": "freemium", "keywords": ["video", "meetings", "zoom"]},
210
+ {"id": "100ms-api", "name": "100ms API", "description": "Live video infrastructure", "category": "communication", "auth": "apiKey", "https": True, "link": "https://www.100ms.live/docs", "pricing": "freemium", "keywords": ["video", "live", "infrastructure"]},
211
+ {"id": "agora-api", "name": "Agora API", "description": "Real-time engagement", "category": "communication", "auth": "apiKey", "https": True, "link": "https://docs.agora.io", "pricing": "freemium", "keywords": ["video", "voice", "realtime"]},
212
+ {"id": "stream-api", "name": "Stream API", "description": "Chat and activity feeds", "category": "communication", "auth": "apiKey", "https": True, "link": "https://getstream.io/docs/", "pricing": "freemium", "keywords": ["chat", "feeds", "activity"]},
213
+ {"id": "pubnub-api", "name": "PubNub API", "description": "Real-time messaging", "category": "communication", "auth": "apiKey", "https": True, "link": "https://www.pubnub.com/docs/", "pricing": "freemium", "keywords": ["messaging", "realtime", "pubsub"]},
214
+ {"id": "pusher-api", "name": "Pusher API", "description": "Real-time channels", "category": "communication", "auth": "apiKey", "https": True, "link": "https://pusher.com/docs/", "pricing": "freemium", "keywords": ["realtime", "websockets", "channels"]},
215
+ {"id": "ably-api", "name": "Ably API", "description": "Real-time messaging", "category": "communication", "auth": "apiKey", "https": True, "link": "https://ably.com/docs", "pricing": "freemium", "keywords": ["realtime", "messaging", "pubsub"]},
216
+ ]
217
+
218
+ def main():
219
+ registry = load_registry()
220
+ existing_ids = get_existing_ids(registry)
221
+ initial_count = len(registry['apis'])
222
+
223
+ print(f"Starting count: {initial_count}")
224
+
225
+ added = 0
226
+ for api in FINAL_APIS:
227
+ api['cors'] = api.get('cors', 'unknown')
228
+ if api['id'].lower() not in existing_ids:
229
+ registry['apis'].append(api)
230
+ existing_ids.add(api['id'].lower())
231
+ added += 1
232
+
233
+ save_registry(registry)
234
+ final_count = len(registry['apis'])
235
+
236
+ print(f"Added: {added}")
237
+ print(f"Final: {final_count}")
238
+
239
+ return added
240
+
241
+ if __name__ == '__main__':
242
+ main()