# App Pricing Research

> Research any App Store app's in-app-purchase / subscription prices across countries, with live USD conversion. Resolves an app by name or numeric App Store id (defaults to ChatGPT), pulls each storefront's real rendered prices, converts via live exchange rates, and prints one table per pricing tier. Use when researching app pricing strategy, comparing subscription prices by country/region, buildi…

- **Type:** Skill
- **Install:** `agentstack add skill-vicoa-ai-app-business-skills-app-pricing-research`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [vicoa-ai](https://agentstack.voostack.com/s/vicoa-ai)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [vicoa-ai](https://github.com/vicoa-ai)
- **Source:** https://github.com/vicoa-ai/app-business-skills/tree/main/skills/app-pricing-research

## Install

```sh
agentstack add skill-vicoa-ai-app-business-skills-app-pricing-research
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# app-pricing-research

First step of app pricing-strategy research: get an app's prices across many countries
(original local price + estimated USD), one table per pricing tier.

## Quick start
```bash
cd app-business-skills/skills/app-pricing-research/scripts

# default: ChatGPT across large-population markets
python3 benchmark.py

# a specific app + countries (ISO codes or names), write to a file too
python3 benchmark.py --app-id 6448311069 --countries in,br,id,tr,us --out report.md

# resolve an app by name (lists matches if ambiguous; re-run with --app-id)
python3 benchmark.py --app-name "Duolingo"
```

## How to choose inputs

**App** — give `--app-id ` if known. Otherwise `--app-name ""` resolves it
via the iTunes Search API (if several match, it prints candidates — pick one and pass `--app-id`).
No app specified → defaults to **ChatGPT** (`6448311069`).

**Countries** — `--countries` takes ISO-3166 alpha-2 codes (`in,br,jp`) or country names
(`India,Brazil,Poland`). Any country resolves automatically from the bundled
`data/countries.json` (~246 countries → name, flag, currency). An unknown *name* errors clearly;
an unknown *code* is still tried best-effort. With no `--countries`, it uses the
**`default_markets`** list in `data/countries.json` — edit that list to change your standing set
of interested markets. To target the user's **own top markets**, first pull installs/proceeds by
territory from App Store Connect (Sales & Trends needs a Sales/Finance/Admin key + vendor number;
the rich Analytics Reports API needs an Admin key).

## How it works
- **Prices**: the App Store listing is rendered per storefront with the gstack `browse` binary
  (real JS render — IAP prices are NOT in the static HTML), then read from the Information →
  In-App Purchases section. URL form: `apps.apple.com//app/id?l=en`.
- **USD**: live rates from `open.er-api.com` (verified to track Google Finance within ~0.2%);
  the report stamps the rate date. The currency is read from the **displayed price** (so
  USD-billed storefronts like Kenya convert correctly), falling back to the country's currency.
- **Output**: one markdown table per pricing tier (rows = countries; local price + ≈USD).

## Notes / limits
- **USD is approximate** — FX updates ~daily and drifts between Apple's price-point updates.
  The local price is exact (straight from Apple); treat ≈USD as a comparison aid.
- **Duplicate tiers**: some apps list the same IAP name twice (e.g. ChatGPT's monthly + annual
  "Plus"); the tool disambiguates by ascending price as `Name (1)` / `Name (2)`.
- **Locale formats** are handled (`Rp 75ribu`=75,000, `132.000đ`=132,000, `R$ 39,90`=39.90).
  If a price can't be parsed safely, ≈USD shows `?` rather than a wrong number.
- **Unknown / no data**: an unrecognized country *name* errors; a country that returns no IAPs is
  listed in a "No data returned" note at the end rather than silently dropped.
- Each country is a separate browser load (~a few seconds); ~15 countries takes a couple minutes.

## Files
- `scripts/benchmark.py` — the tool. `data/countries.json` — country reference (code → name +
  currency) and the editable `default_markets` list; regenerate from mledoze/countries to refresh.

## Prereqs
- gstack `browse` (the `/browse` skill) installed.
- `python3` (standard library only).

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [vicoa-ai](https://github.com/vicoa-ai)
- **Source:** [vicoa-ai/app-business-skills](https://github.com/vicoa-ai/app-business-skills)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-vicoa-ai-app-business-skills-app-pricing-research
- Seller: https://agentstack.voostack.com/s/vicoa-ai
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
