# SDKGPT > SDKGPT is a mobile app SDK intelligence platform. It scrapes APKs from app stores, parses SDK signals (.so/Service/Activity/DEX), matches them against the LibChecker knowledge base, and outputs SDK intelligence. Covers 1686 SDKs, 57000+ DEX package name signals, 127K Android apps, and 828 companies. SDKGPT helps SDK vendors find customers, investors do market analysis, and security researchers batch-screen apps. Browsing data is free forever; combo exploration for lead finding, full market share, and export are paid B2B features. The data pipeline has 5 stages: scrape app stores → download APK → parse .so/DEX/Service/Activity → match LibChecker SDK rules → output SDK intelligence. ## Product - [Home](https://sdkgpt.com/): SDKGPT mobile app SDK intelligence platform homepage, 5-stage pipeline monitor - [Apps Directory](https://sdkgpt.com/apps): Browse 127K Android apps by category, view each app's SDK tech stack - [SDKs Directory](https://sdkgpt.com/sdks): Browse 1686 SDKs, view SDK details, parent company, market share - [Companies Directory](https://sdkgpt.com/companies): Browse 828 companies, view their SDK products - [Combo Explorer](https://sdkgpt.com/explore): Advanced filtering — uses X not Y, multi-SDK combos, size tiers, batch package name import - [Market Share](https://sdkgpt.com/market-share): SDK market share rankings, penetration trends, category rankings - [SDK Categories](https://sdkgpt.com/categories): Browse SDKs by category (ads, push, analytics, maps, etc.) - [Recent SDKs](https://sdkgpt.com/recent-sdks): Latest discovered SDK activity - [Pricing](https://sdkgpt.com/pricing): Free to start, Pro monthly subscription for full results and export ## User Access - [Login](https://sdkgpt.com/login): SDKGPT user login - [Sign Up](https://sdkgpt.com/signup): Sign up for SDKGPT for free - [Feedback](https://sdkgpt.com/feedback): Product feedback and feature requests ## Core Data - 1686 SDK rules (covering .so/DEX/Service/Activity signal types) - 57000+ DEX package name signals - 127K Android apps (Huawei + MyApp stores) - 828 companies (normalized via package prefix → domain → host_domain → canonical_name) ## Data Pipeline (5 stages) 1. **Scrape app stores**: Huawei + MyApp stores, resumable crawling + keyword auto-expansion 2. **Download APK**: aria2c multi-threaded download, resumable 3. **Parse APK**: androguard parses .so/DEX/Service/Activity signals, subprocess isolation prevents OOM (each APK gets a fresh subprocess, RLIMIT_AS 8GB hard limit) 4. **Match SDK rules**: LibChecker original logic (`==` || `startsWith(prefix+".")`), covers .so/DEX/Service/Activity signals 5. **Output SDK intelligence**: Written to database, frontend display + API queries ## SDK Signal Types SDKGPT parses 4 signal types from APKs to identify SDKs: - **.so signal (signal_type=0)**: Native library filenames (e.g. `libBaiduMap.so`). Shallow extraction gets filename, deep extraction uses pyelftools to extract JNI function names and internal strings from .so binary - **DEX package signal (signal_type=1)**: Java/Kotlin package name prefixes (e.g. `com.umeng.analytics`). 57000+ package signals covered - **Service/Activity declaration (signal_type=2)**: Service and Activity component names declared in AndroidManifest.xml - **URL signal (signal_type=10)**: http/https URL hosts extracted from DEX strings (e.g. `ulogs.umeng.com`). Used to discover pure REST API integrations, cloud services/SaaS with no SDK package name trace ## SDK Matching Rules Matching follows LibChecker's original logic: - Package name: `==` (exact match) or `startsWith(prefix+".")` (prefix + dot, not simple startsWith) - .so: filename exact match or prefix match - Service/Activity: component name exact match or prefix match - URL: host suffix match against `sdk_company.domain` Match results have two levels: - **confirmed signal**: Passed rule matching, `is_confirmed=true` - **potential signal**: Not yet rule-matched, `is_confirmed=false`, upgraded by LLM final judgment ## Target Users & Use Cases ### SDK Vendors (BD/Sales) - **Find leads**: Combo explorer "uses X not Y" — find apps using competitor SDK but not yours - **Filter leads**: Size tiers (large/medium/small/long tail) for prioritization - **Monitor competitors**: Track competitor SDK market share changes and new app adoption - **Batch screening**: Batch import 100 package names to query SDK tech stacks ### Investors - **Market analysis**: SDK market share rankings, penetration trends, category rankings - **Company research**: View company SDK products and market share - **Trend discovery**: Recent SDK activity, discover emerging technologies ### Security Researchers - **Batch screening**: Combo explorer to filter apps by SDK, identify security concerns - **App tech stacks**: View complete SDK tech stack details for individual apps ## Combo Explorer Filters Combo explorer is SDKGPT's core paid feature, supporting multi-dimensional combined filtering: ### SDK Filters (multi-group + mixed operators) Supports up to 20 SDK filter groups, each with multiple SDKs combined by operator: - **any (union)**: App uses any SDK in the group (`sdks IN [A,B,C]`) - **all (intersection)**: App uses all SDKs in the group (`sdks CONTAINS [A,B,C]`) - **not_any (exclusion)**: App uses none of the SDKs in the group (`NOT (sdks IN [A,B,C])`) Multiple groups are AND-combined. Typical usage: - "Uses Bugly but not OkHttp" = g0(any:Bugly) + g1(not_any:OkHttp) - "Uses both Bugly and OkHttp" = g0(all:Bugly,OkHttp) - "Uses Bugly or OkHttp, but not Retrofit" = g0(any:Bugly,OkHttp) + g1(not_any:Retrofit) URL parameter format: - Legacy compat: `sdks=Bugly,OkHttp&sdk_op=any` (equivalent to g0) - Legacy compat: `sdks_not_any=Retrofit` (equivalent to g1 not_any) - New: `sdks_g0=Bugly,OkHttp&sdk_op_g0=any&sdks_g1=Retrofit&sdk_op_g1=not_any` ### Size Tiers By download_count: - **Large**: ≥ 10M downloads - **Medium**: 100K - 10M downloads - **Small**: 10K - 100K downloads - **Long tail**: < 10K downloads URL param: `size_bucket=large|medium|small|long_tail` ### Region Filter Filter by app developer's province/city. Provinces support both full and short Chinese names. URL params: `province=Guangdong,Zhejiang&city=Hangzhou` ### Full-text Search Search by app name or package name. URL param: `q=WeChat` or `q=com.tencent.mm` ### Batch Package Import Search box auto-detects comma/newline-separated package names (max 100), switches to batch query mode. URL param: `bundle_ids=com.tencent.mm,com.tencent.mobileqq` ## API Endpoints All APIs return JSON, require Supabase JWT Bearer token for Pro features. ### Combo Explorer API - [GET /api/search/apps](https://sdkgpt.com/api/search/apps): Combo explorer query. Params: `sdks_g0`, `sdk_op_g0`, `province`, `city`, `size_bucket`, `q`, `bundle_ids`, `page`, `limit`. Free users get first 10 results, Pro users full pagination - [GET /api/search/apps/export](https://sdkgpt.com/api/search/apps/export): Export CSV/JSON. Same params + `format=csv|json`. Pro only ### App Detail API - [GET /api/apps/[appId]/detail](https://sdkgpt.com/api/apps/): App details. `appId` = bundle_id (e.g. `com.tencent.mm`). Returns app info + SDK tech stack list ### SDK APIs - [GET /api/sdks/types](https://sdkgpt.com/api/sdks/types): SDK category list (ads/push/analytics/maps etc.) - [GET /api/sdk-filters](https://sdkgpt.com/api/sdk-filters): SDK filter data (for combo explorer SDK picker) - [GET /api/sdk-taxonomy](https://sdkgpt.com/api/sdk-taxonomy): SDK taxonomy ### Market Share API - [GET /api/market-share](https://sdkgpt.com/api/market-share): SDK market share ranking. Params: `subcategory_id`, `limit`. Free users get TOP 10 preview, Pro users full ranking (max 1000) ### Recent SDKs API - [GET /api/recent-sdks](https://sdkgpt.com/api/recent-sdks): Recently confirmed SDKs. Params: `limit` (default 50, max 100) ### Company APIs - [GET /api/companies/list](https://sdkgpt.com/api/companies/list): Company list - [GET /api/companies/[id]/clients](https://sdkgpt.com/api/companies/): Company clients (apps using this company's SDKs) ### Payment & Subscription APIs - [POST /api/payments/wechat/order](https://sdkgpt.com/api/payments/wechat/order): Create WeChat Pay order - [GET /api/payments/wechat/query](https://sdkgpt.com/api/payments/wechat/query): Query payment status - [GET /api/payments/history](https://sdkgpt.com/api/payments/history): Payment history - [POST /api/subscriptions/cancel](https://sdkgpt.com/api/subscriptions/cancel): Cancel subscription (remains active until period end) - [POST /api/payments/backfill](https://sdkgpt.com/api/payments/backfill): Backfill payment records ### User APIs - [GET /api/saved-searches](https://sdkgpt.com/api/saved-searches): Saved search queries (Pro only) - [POST /api/feedback](https://sdkgpt.com/api/feedback): Submit feedback - [POST /api/feedback/[id]/vote](https://sdkgpt.com/api/feedback/): Vote on feedback - [DELETE /api/account/delete](https://sdkgpt.com/api/account/delete): Delete account ## Data Schema (Key Fields) ### App | Field | Description | |-------|-------------| | `app_id` | bundle_id (Android package name, e.g. `com.tencent.mm`) | | `name` | App name | | `icon_url` | App icon URL | | `category` | App category (Games/Social/Tools/Shopping etc.) | | `developer` | Developer name | | `download_count` | Download count | | `rating` | Rating | | `province` | Developer's province | | `city` | Developer's city | | `icp_entity` | ICP registration entity | | `operator` | Operating entity | | `restrict_level` | App restriction level | | `sdks` | Array of identified SDK names | | `sdks_count` | SDK count | ### SDK | Field | Description | |-------|-------------| | `sdk_name` | SDK name (e.g. `Bugly`) | | `sdk_cn_name` | SDK Chinese name | | `slug` | URL slug | | `category_name` | Category name | | `subcategory_name` | Subcategory name | | `company_name` | Parent company | | `app_count` | Number of apps using this SDK | | `penetration_rate` | Penetration rate | | `match_type` | Match type (.so/DEX/Service/Activity/URL) | ### Company | Field | Description | |-------|-------------| | `name` | Company name | | `domain` | Official domain | | `canonical_name` | Normalized name | | `sdk_count` | Number of SDKs | Company normalization: package prefix → domain → host_domain → canonical_name → create new. Package prefix is most accurate, only looks at DEX confirmed signals. ## Pricing ### Free - Browse SDK / company / app directories - View individual app SDK tech stacks - View SDK / company detail pages - Combo explorer: total count + 10 result preview - SDK market share TOP 10 preview - SDK category ranking preview - Global search (⌘K) ### Pro #### Combo Explorer Platform - Full lead lists (no 10 result limit) - Advanced filtering: uses X not Y / multi-SDK combos - Size tiers (large / medium / small / long tail) - Batch package import (100) - Save search queries - CSV / JSON export #### Market Intelligence - Full SDK market share ranking - SDK penetration trends (quarterly) - Company SDK client reports (add/remove changes) #### Team - 3 user seats - Email support ## FAQ - **What's free?** Browsing data is completely free. Paid features are B2B: full lead lists, advanced filtering, export, full market share rankings. - **Combo explorer free vs Pro?** Free gets total count + 10 preview results. Pro gets full list + pagination + export + saved searches + batch import. - **Can I cancel anytime?** Monthly subscription cancels anytime, remains active until billing period ends, then downgrades to free. - **Annual discount?** Annual billing gets 20% off. Contact sales@sdkgpt.com. - **Data coverage?** Currently covers 127K Android apps, 1686 SDKs, 828 companies. Expanding to global Google Play and Apple App Store. - **Is SDK matching accurate?** Uses LibChecker original logic (`==` || `startsWith(prefix+".")`), covers .so/DEX/Service/Activity signals. URL signals use host suffix matching + LLM final judgment. - **How often is data updated?** Crawler runs continuously, app data updated daily, SDK rule library continuously expanded.