repositorypackage
1.0.1
Repository: https://github.com/nightcodezero/katsini.git
Documentation: pkg.go.dev
# README
Katsini - Get the latest app info from app stores

A blazing-fast, lightweight, and user-friendly tool built with Go for retrieving app information from major app stores.
š Features
- ā”ļø Blazingly fast ā Lightning-quick app data retrieval powered by Go
- šļø Multi-store support ā Fetch data from major app stores in one place
- šŖ¶ Lightweight ā Minimal resource footprint for efficient operation
- š³ Containerized ā Full Docker support for flexible deployment
- š Simple API ā Clean REST endpoints for seamless integration
- š Structured data ā Consistent JSON output for all app stores
- š ļø Easy setup ā Get started in minutes with straightforward configuration
šļø Supported App Stores
š³ Quick Start
- Docker and Docker Compose must be installed on your machine.
- Copy code below and save it as
docker-compose.yml
.
services:
browser:
image: chromedp/headless-shell
ports:
- "9222:9222"
command: [
"--no-sandbox",
"--disable-gpu",
"--remote-debugging-address=0.0.0.0",
"--remote-debugging-port=9222",
"--disable-extensions",
"--enable-automation",
"--disable-blink-features=AutomationControlled",
"--incognito",
"--user-agent=Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
]
app:
image: ghcr.io/nightcodezero/katsini:latest
environment:
CHROME_HOST: browser
CHROME_PORT: 9222
ports:
- "8080:8080"
depends_on:
- browser
links:
- browser
- Run
docker-compose up
to start the service.
š That's it! You can now access the service at http://localhost:8080
š Usage
šļø Google Play Store
Example Request:
- URL:
http://localhost:8080/playstore
- Method:
GET
- Query Parameter:
bundleId
(REQUIRED): The app package name (e.g.,com.mediocre.dirac
).lang
(optional, defaults to `'en'): The two letter language code in which to fetch the app page.country
(optional, defaults to 'us'): The two letter country code used to retrieve the applications. Needed when the app is available only in some countries.
curl http://localhost:8080/playstore?bundleId=com.mediocre.dirac&lang=en&country=us
Example Response:
{
"bundleId": "com.mediocre.dirac",
"developer": "Mediocre",
"title": "Beyondium",
"updated": "31-10-2019",
"url": "https://play.google.com/store/apps/details?id=com.mediocre.dirac&hl=en&gl=us",
"version": "1.1.5"
}
šļø Apple App Store
Example Request:
- URL:
http://localhost:8080/appstore
- Method:
GET
- Query Parameter:
appId
orbundleId
(REQUIRED):appId
: The unique identifier for the application in the Apple App Store. This can be found in the app's store URL after the/id<APP_ID>
segment.bundleId
: The app package name (e.g.,com.thinkdivergent
).
country
(optional, defaults to 'us'): The two letter country code used to retrieve the applications. Needed when the app is available only in some countries.
curl http://localhost:8080/appstore?appId=1592213654&country=us
Example Response:
{
"appId": "1592213654",
"bundleId": "com.thinkdivergent",
"developer": "Think Divergent LLC",
"title": "Think Divergent",
"updated": "11-02-2023",
"url": "https://apps.apple.com/us/app/think-divergent/id1592213654?uo=4",
"version": "2.0.13"
}
šļø Huawei AppGallery
Example Request:
- URL:
http://localhost:8080/appgallery
- Method:
GET
- Query Parameter:
appId
(REQUIRED): The unique identifier for the application in the Huawei AppGallery. This can be found in the app's store URL after the/app/C<APP_ID>
segment.
curl http://localhost:8080/appgallery?appId=100102149
Example Response:
{
"appId": "100102149",
"bundleId": "com.radio.fmradio",
"developer": "RADIOFM",
"title": "Radio FM",
"updated": "05-11-2024",
"url": "https://appgallery.huawei.com/app/C100102149",
"version": "6.5.6"
}
ā” Benchmarks
The benchmarks were run using the following command:
go test -bench=. -benchtime=1s -benchmem -cpu=1
The results of the benchmarks are as follows:
goos: linux
goarch: amd64
pkg: github.com/nightcodezero/katsini
cpu: 12th Gen Intel(R) Core(TM) i7-12700
BenchmarkGooglePlayStore 2 811015314 ns/op 3816876 B/op 21807 allocs/op
BenchmarkAppleAppStore 64 18702830 ns/op 95091 B/op 163 allocs/op
BenchmarkHuaweiAppGallery 2 892189872 ns/op 2685124 B/op 15531 allocs/op
The benchmark results show the average time taken and how many iterations were run per operation can be done in a second.
- Note: The benchmarks were run on a 12th Gen Intel(R) Core(TM) i7-12700 CPU and using a single CPU core.
2
: The number of iterations run per operation.ns/op
: The average time taken for each operation.B/op
: The average number of bytes allocated per operation.allocs/op
: The average number of memory allocations per operation.
š Uses
Here are some of the libraries that are used in this project:
- Chromedp - A faster, simpler way to drive browsers in Go.