{"id":13646807,"url":"https://github.com/timoa/app-stores-prometheus-exporter","last_synced_at":"2025-04-11T13:43:30.213Z","repository":{"id":37821642,"uuid":"157163399","full_name":"timoa/app-stores-prometheus-exporter","owner":"timoa","description":"Prometheus exporter that exports metrics (score, ratings, reviews, app version, etc.) from the Apple App Store and Google Play Store","archived":false,"fork":false,"pushed_at":"2024-05-22T12:31:07.000Z","size":3051,"stargazers_count":102,"open_issues_count":10,"forks_count":19,"subscribers_count":5,"default_branch":"develop","last_synced_at":"2024-05-22T13:44:20.741Z","etag":null,"topics":["docker","google-play-store","itunes-store","managed-by-terraform","nodejs","prometheus","prometheus-exporter"],"latest_commit_sha":null,"homepage":"https://timoa.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/timoa.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-11-12T05:55:58.000Z","updated_at":"2024-05-22T13:44:30.138Z","dependencies_parsed_at":"2023-11-22T16:01:32.553Z","dependency_job_id":"deed6ac7-10fd-4784-889f-8fbc88967339","html_url":"https://github.com/timoa/app-stores-prometheus-exporter","commit_stats":null,"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timoa%2Fapp-stores-prometheus-exporter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timoa%2Fapp-stores-prometheus-exporter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timoa%2Fapp-stores-prometheus-exporter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timoa%2Fapp-stores-prometheus-exporter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/timoa","download_url":"https://codeload.github.com/timoa/app-stores-prometheus-exporter/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248410861,"owners_count":21098783,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","google-play-store","itunes-store","managed-by-terraform","nodejs","prometheus","prometheus-exporter"],"created_at":"2024-08-02T01:03:07.616Z","updated_at":"2025-04-11T13:43:30.169Z","avatar_url":"https://github.com/timoa.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# Mobile app stores Prometheus Exporter (iTunes \u0026 Google Play)\n\n[![Latest Release][release-badge]][release-url]\n[![Build Status][github-badge]][github-url]\n[![Docker Pulls][docker-badge]][docker-url]\n\n[![Quality Gate Status][sonarcloud-status-badge]][sonarcloud-url]\n[![Security Rating][sonarcloud-security-badge]][sonarcloud-url]\n[![Maintainability Rating][sonarcloud-maintainability-badge]][sonarcloud-url]\n\n[![Bugs][sonarcloud-bugs-badge]][sonarcloud-url]\n[![Code Smells][sonarcloud-codesmells-badge]][sonarcloud-url]\n[![Coverage][sonarcloud-coverage-badge]][sonarcloud-url]\n[![Duplicated Lines (%)][sonarcloud-duplicated-badge]][sonarcloud-url]\n\n[![License: MIT][badge-license]][link-license]\n\n![Grafana dashboard that uses the App Stores Prometheus Exporter][image-dashboard-app]\n\nThis Prometheus exporter exports metrics (score, ratings, reviews, app version, etc.) from Apple iTunes and Google Play\n\nIt's based on [google-play-scraper][link-google-play-scraper] and [app-store-scraper][link-app-store-scraper] to help getting the data from the mobile app stores.\n\nI'm looking to add more stores in the future (Microsoft Store, Amazon Appstore, etc.)\n\n## Metrics supported by the exporter\n\nCurrently, the Prometheus Exporter exports these datas:\n\n| Metric | iTunes | Google Play |\n|--------|--------|-------------|\n| Score since first version | ✅ | ✅ |\n| Current Version Score | ✅ | ❌ |\n| Current Version number of Reviews | ✅ | ❌ |\n| Total Number of Reviews | ✅ | ✅ |\n| Total Number of Ratings | ✅ | ✅ |\n| Total Number of Ratings with 1 star | ✅ | ✅ |\n| Total Number of Ratings with 2 stars | ✅ | ✅ |\n| Total Number of Ratings with 3 stars | ✅ | ✅ |\n| Total Number of Ratings with 4 stars | ✅ | ✅ |\n| Total Number of Ratings with 5 stars | ✅ | ✅ |\n| Minimum Active Installs | ❌ | ✅ |\n| Maximum Active Installs | ❌ | ✅ |\n\n## Metrics exposed to Prometheus\n\n### Default collected metrics\n\n``` text\nprocess_cpu_user_seconds_total\nprocess_cpu_system_seconds_total\nprocess_cpu_seconds_total\nprocess_start_time_seconds\nprocess_resident_memory_bytes\nnodejs_eventloop_lag_seconds\nnodejs_eventloop_lag_min_seconds\nnodejs_eventloop_lag_max_seconds\nnodejs_eventloop_lag_mean_seconds\nnodejs_eventloop_lag_stddev_seconds\nnodejs_eventloop_lag_p50_seconds\nnodejs_eventloop_lag_p90_seconds\nnodejs_eventloop_lag_p99_seconds\nnodejs_active_handles{type=\"Pipe\"}\nnodejs_active_handles{type=\"Socket\"}\nnodejs_active_handles{type=\"Server\"}\nnodejs_active_handles_total\nnodejs_active_requests_total\nnodejs_heap_size_total_bytes\nnodejs_heap_size_used_bytes\nnodejs_external_memory_bytes\nnodejs_heap_space_size_total_bytes{space=\"read_only\"}\nnodejs_heap_space_size_total_bytes{space=\"new\"}\nnodejs_heap_space_size_total_bytes{space=\"old\"}\nnodejs_heap_space_size_total_bytes{space=\"code\"}\nnodejs_heap_space_size_total_bytes{space=\"map\"}\nnodejs_heap_space_size_total_bytes{space=\"large_object\"}\nnodejs_heap_space_size_total_bytes{space=\"code_large_object\"}\nnodejs_heap_space_size_total_bytes{space=\"new_large_object\"}\nnodejs_heap_space_size_used_bytes{space=\"read_only\"}\nnodejs_heap_space_size_used_bytes{space=\"new\"}\nnodejs_heap_space_size_used_bytes{space=\"old\"}\nnodejs_heap_space_size_used_bytes{space=\"code\"}\nnodejs_heap_space_size_used_bytes{space=\"map\"}\nnodejs_heap_space_size_used_bytes{space=\"large_object\"}\nnodejs_heap_space_size_used_bytes{space=\"code_large_object\"}\nnodejs_heap_space_size_used_bytes{space=\"new_large_object\"}\nnodejs_heap_space_size_available_bytes{space=\"read_only\"}\nnodejs_heap_space_size_available_bytes{space=\"new\"}\nnodejs_heap_space_size_available_bytes{space=\"old\"}\nnodejs_heap_space_size_available_bytes{space=\"code\"}\nnodejs_heap_space_size_available_bytes{space=\"map\"}\nnodejs_heap_space_size_available_bytes{space=\"large_object\"}\nnodejs_heap_space_size_available_bytes{space=\"code_large_object\"}\nnodejs_heap_space_size_available_bytes{space=\"new_large_object\"}\nnodejs_version_info{version=\"v16.14.2\",major=\"16\",minor=\"14\",patch=\"2\"}\nnodejs_gc_duration_seconds_bucket{le=\"0.001\",kind=\"incremental\"}\nnodejs_gc_duration_seconds_bucket{le=\"0.01\",kind=\"incremental\"}\nnodejs_gc_duration_seconds_bucket{le=\"0.1\",kind=\"incremental\"}\nnodejs_gc_duration_seconds_bucket{le=\"1\",kind=\"incremental\"}\nnodejs_gc_duration_seconds_bucket{le=\"2\",kind=\"incremental\"}\nnodejs_gc_duration_seconds_bucket{le=\"5\",kind=\"incremental\"}\nnodejs_gc_duration_seconds_bucket{le=\"+Inf\",kind=\"incremental\"}\nnodejs_gc_duration_seconds_sum{kind=\"incremental\"}\nnodejs_gc_duration_seconds_count{kind=\"incremental\"}\nnodejs_gc_duration_seconds_bucket{le=\"0.001\",kind=\"major\"}\nnodejs_gc_duration_seconds_bucket{le=\"0.01\",kind=\"major\"}\nnodejs_gc_duration_seconds_bucket{le=\"0.1\",kind=\"major\"}\nnodejs_gc_duration_seconds_bucket{le=\"1\",kind=\"major\"}\nnodejs_gc_duration_seconds_bucket{le=\"2\",kind=\"major\"}\nnodejs_gc_duration_seconds_bucket{le=\"5\",kind=\"major\"}\nnodejs_gc_duration_seconds_bucket{le=\"+Inf\",kind=\"major\"}\nnodejs_gc_duration_seconds_sum{kind=\"major\"}\nnodejs_gc_duration_seconds_count{kind=\"major\"}\nnodejs_gc_duration_seconds_bucket{le=\"0.001\",kind=\"minor\"}\nnodejs_gc_duration_seconds_bucket{le=\"0.01\",kind=\"minor\"}\nnodejs_gc_duration_seconds_bucket{le=\"0.1\",kind=\"minor\"}\nnodejs_gc_duration_seconds_bucket{le=\"1\",kind=\"minor\"}\nnodejs_gc_duration_seconds_bucket{le=\"2\",kind=\"minor\"}\nnodejs_gc_duration_seconds_bucket{le=\"5\",kind=\"minor\"}\nnodejs_gc_duration_seconds_bucket{le=\"+Inf\",kind=\"minor\"}\nnodejs_gc_duration_seconds_sum{kind=\"minor\"}\nnodejs_gc_duration_seconds_count{kind=\"minor\"}\n```\n\n### iTunes Store\n\n``` text\nappstores_score_total{store=\"itunes\",country=\"COUNTRY\",app=\"BUNDLEID\",version=\"VERSION\"}\nappstores_reviews_total{store=\"itunes\",country=\"COUNTRY\",app=\"BUNDLEID\",version=\"VERSION\"}\nappstores_current_version_score_total{store=\"itunes\",country=\"COUNTRY\",app=\"BUNDLEID\",version=\"VERSION\"}\nappstores_current_version_reviews_total{store=\"itunes\",country=\"COUNTRY\",app=\"BUNDLEID\",version=\"VERSION\"}\nappstores_ratings_total{store=\"itunes\",country=\"COUNTRY\",app=\"APPID\",version=\"VERSION\"}\nappstores_ratings_1_total{store=\"itunes\",country=\"COUNTRY\",app=\"APPID\",version=\"VERSION\"}\nappstores_ratings_2_total{store=\"itunes\",country=\"COUNTRY\",app=\"APPID\",version=\"VERSION\"}\nappstores_ratings_3_total{store=\"itunes\",country=\"COUNTRY\",app=\"APPID\",version=\"VERSION\"}\nappstores_ratings_4_total{store=\"itunes\",country=\"COUNTRY\",app=\"APPID\",version=\"VERSION\"}\nappstores_ratings_5_total{store=\"itunes\",country=\"COUNTRY\",app=\"APPID\",version=\"VERSION\"}\n```\n\n### Google Play Store\n\n``` text\nappstores_score_total{store=\"gplay\",country=\"COUNTRY\",app=\"APPID\",version=\"VERSION\"}\nappstores_reviews_total{store=\"gplay\",country=\"COUNTRY\",app=\"APPID\",version=\"VERSION\"}\nappstores_ratings_total{store=\"gplay\",country=\"COUNTRY\",app=\"APPID\",version=\"VERSION\"}\nappstores_ratings_1_total{store=\"gplay\",country=\"COUNTRY\",app=\"APPID\",version=\"VERSION\"}\nappstores_ratings_2_total{store=\"gplay\",country=\"COUNTRY\",app=\"APPID\",version=\"VERSION\"}\nappstores_ratings_3_total{store=\"gplay\",country=\"COUNTRY\",app=\"APPID\",version=\"VERSION\"}\nappstores_ratings_4_total{store=\"gplay\",country=\"COUNTRY\",app=\"APPID\",version=\"VERSION\"}\nappstores_ratings_5_total{store=\"gplay\",country=\"COUNTRY\",app=\"APPID\",version=\"VERSION\"}\nappstores_min_active_installs{store=\"gplay\",country=\"COUNTRY\",app=\"APPID\",version=\"VERSION\"}\nappstores_max_active_installs{store=\"gplay\",country=\"COUNTRY\",app=\"APPID\",version=\"VERSION\"}\n```\n\n## Metrics output example\n\n``` text\n[...]\n\n# HELP appstores_score_total App score since the launch of the app\n# TYPE appstores_score_total gauge\nappstores_score_total{store=\"itunes\",country=\"us\",app=\"net.whatsapp.WhatsApp\",version=\"22.7.80\"} 4.69536\nappstores_score_total{store=\"itunes\",country=\"us\",app=\"com.burbn.instagram\",version=\"228.0\"} 4.74342\nappstores_score_total{store=\"itunes\",country=\"gb\",app=\"net.whatsapp.WhatsApp\",version=\"22.7.80\"} 4.69854\nappstores_score_total{store=\"gplay\",country=\"us\",app=\"com.whatsapp\",version=\"2.22.7.74\"} 4.2947626\nappstores_score_total{store=\"gplay\",country=\"us\",app=\"com.instagram.android\",version=\"Varies with device\"} 4.0539274\nappstores_score_total{store=\"gplay\",country=\"gb\",app=\"com.whatsapp\",version=\"2.22.7.74\"} 4.2890716\n\n# HELP appstores_reviews_total App reviews since the launch of the app\n# TYPE appstores_reviews_total gauge\nappstores_reviews_total{store=\"itunes\",country=\"us\",app=\"net.whatsapp.WhatsApp\",version=\"22.7.80\"} 9898794\nappstores_reviews_total{store=\"itunes\",country=\"us\",app=\"com.burbn.instagram\",version=\"228.0\"} 22806478\nappstores_reviews_total{store=\"itunes\",country=\"gb\",app=\"net.whatsapp.WhatsApp\",version=\"22.7.80\"} 2505037\nappstores_reviews_total{store=\"gplay\",country=\"us\",app=\"com.whatsapp\",version=\"2.22.7.74\"} 1796947\nappstores_reviews_total{store=\"gplay\",country=\"us\",app=\"com.instagram.android\",version=\"Varies with device\"} 4337335\nappstores_reviews_total{store=\"gplay\",country=\"gb\",app=\"com.whatsapp\",version=\"2.22.7.74\"} 682822\n\n# HELP appstores_ratings_total App ratings since the launch of the app\n# TYPE appstores_ratings_total gauge\nappstores_ratings_total{store=\"itunes\",country=\"us\",app=\"net.whatsapp.WhatsApp\",version=\"22.7.80\"} 9903510\nappstores_ratings_total{store=\"itunes\",country=\"us\",app=\"com.burbn.instagram\",version=\"228.0\"} 22806478\nappstores_ratings_total{store=\"itunes\",country=\"gb\",app=\"net.whatsapp.WhatsApp\",version=\"22.7.80\"} 2505968\nappstores_ratings_total{store=\"gplay\",country=\"us\",app=\"com.whatsapp\",version=\"2.22.7.74\"} 159650351\nappstores_ratings_total{store=\"gplay\",country=\"us\",app=\"com.instagram.android\",version=\"Varies with device\"} 133666117\nappstores_ratings_total{store=\"gplay\",country=\"gb\",app=\"com.whatsapp\",version=\"2.22.7.74\"} 159649715\n\n# HELP appstores_ratings_1_total App ratings with 1 star since the launch of the app\n# TYPE appstores_ratings_1_total gauge\nappstores_ratings_1_total{store=\"itunes\",country=\"us\",app=\"net.whatsapp.WhatsApp\",version=\"22.7.80\"} 290260\nappstores_ratings_1_total{store=\"itunes\",country=\"us\",app=\"com.burbn.instagram\",version=\"228.0\"} 626005\nappstores_ratings_1_total{store=\"itunes\",country=\"gb\",app=\"net.whatsapp.WhatsApp\",version=\"22.7.80\"} 56262\nappstores_ratings_1_total{store=\"gplay\",country=\"us\",app=\"com.whatsapp\",version=\"2.22.7.74\"} 16970531\nappstores_ratings_1_total{store=\"gplay\",country=\"us\",app=\"com.instagram.android\",version=\"Varies with device\"} 21887135\nappstores_ratings_1_total{store=\"gplay\",country=\"gb\",app=\"com.whatsapp\",version=\"2.22.7.74\"} 16107629\n\n# HELP appstores_ratings_2_total App ratings with 2 stars since the launch of the app\n# TYPE appstores_ratings_2_total gauge\nappstores_ratings_2_total{store=\"itunes\",country=\"us\",app=\"net.whatsapp.WhatsApp\",version=\"22.7.80\"} 124294\nappstores_ratings_2_total{store=\"itunes\",country=\"us\",app=\"com.burbn.instagram\",version=\"228.0\"} 191480\nappstores_ratings_2_total{store=\"itunes\",country=\"gb\",app=\"net.whatsapp.WhatsApp\",version=\"22.7.80\"} 26797\nappstores_ratings_2_total{store=\"gplay\",country=\"us\",app=\"com.whatsapp\",version=\"2.22.7.74\"} 4302408\nappstores_ratings_2_total{store=\"gplay\",country=\"us\",app=\"com.instagram.android\",version=\"Varies with device\"} 3966737\nappstores_ratings_2_total{store=\"gplay\",country=\"gb\",app=\"com.whatsapp\",version=\"2.22.7.74\"} 4142390\n\n# HELP appstores_ratings_3_total App ratings with 3 stars since the launch of the app\n# TYPE appstores_ratings_3_total gauge\nappstores_ratings_3_total{store=\"itunes\",country=\"us\",app=\"net.whatsapp.WhatsApp\",version=\"22.7.80\"} 316454\nappstores_ratings_3_total{store=\"itunes\",country=\"us\",app=\"com.burbn.instagram\",version=\"228.0\"} 553889\nappstores_ratings_3_total{store=\"itunes\",country=\"gb\",app=\"net.whatsapp.WhatsApp\",version=\"22.7.80\"} 90520\nappstores_ratings_3_total{store=\"gplay\",country=\"us\",app=\"com.whatsapp\",version=\"2.22.7.74\"} 7736141\nappstores_ratings_3_total{store=\"gplay\",country=\"us\",app=\"com.instagram.android\",version=\"Varies with device\"} 6554452\nappstores_ratings_3_total{store=\"gplay\",country=\"gb\",app=\"com.whatsapp\",version=\"2.22.7.74\"} 8522048\n\n# HELP appstores_ratings_4_total App ratings with 4 stars since the launch of the app\n# TYPE appstores_ratings_4_total gauge\nappstores_ratings_4_total{store=\"itunes\",country=\"us\",app=\"net.whatsapp.WhatsApp\",version=\"22.7.80\"} 850007\nappstores_ratings_4_total{store=\"itunes\",country=\"us\",app=\"com.burbn.instagram\",version=\"228.0\"} 1665557\nappstores_ratings_4_total{store=\"itunes\",country=\"gb\",app=\"net.whatsapp.WhatsApp\",version=\"22.7.80\"} 268918\nappstores_ratings_4_total{store=\"gplay\",country=\"us\",app=\"com.whatsapp\",version=\"2.22.7.74\"} 16329658\nappstores_ratings_4_total{store=\"gplay\",country=\"us\",app=\"com.instagram.android\",version=\"Varies with device\"} 13900146\nappstores_ratings_4_total{store=\"gplay\",country=\"gb\",app=\"com.whatsapp\",version=\"2.22.7.74\"} 19597512\n\n# HELP appstores_ratings_5_total App ratings with 5 stars since the launch of the app\n# TYPE appstores_ratings_5_total gauge\nappstores_ratings_5_total{store=\"itunes\",country=\"us\",app=\"net.whatsapp.WhatsApp\",version=\"22.7.80\"} 8322495\nappstores_ratings_5_total{store=\"itunes\",country=\"us\",app=\"com.burbn.instagram\",version=\"228.0\"} 19769547\nappstores_ratings_5_total{store=\"itunes\",country=\"gb\",app=\"net.whatsapp.WhatsApp\",version=\"22.7.80\"} 2063471\nappstores_ratings_5_total{store=\"gplay\",country=\"us\",app=\"com.whatsapp\",version=\"2.22.7.74\"} 114311571\nappstores_ratings_5_total{store=\"gplay\",country=\"us\",app=\"com.instagram.android\",version=\"Varies with device\"} 87357625\nappstores_ratings_5_total{store=\"gplay\",country=\"gb\",app=\"com.whatsapp\",version=\"2.22.7.74\"} 111280031\n\n# HELP appstores_current_version_score_total App score for the current app version\n# TYPE appstores_current_version_score_total gauge\nappstores_current_version_score_total{store=\"itunes\",country=\"us\",app=\"net.whatsapp.WhatsApp\",version=\"22.7.80\"} 4.69536\nappstores_current_version_score_total{store=\"itunes\",country=\"us\",app=\"com.burbn.instagram\",version=\"228.0\"} 4.74342\nappstores_current_version_score_total{store=\"itunes\",country=\"gb\",app=\"net.whatsapp.WhatsApp\",version=\"22.7.80\"} 4.69854\n\n# HELP appstores_current_version_reviews_total App reviews for the current app version\n# TYPE appstores_current_version_reviews_total gauge\nappstores_current_version_reviews_total{store=\"itunes\",country=\"us\",app=\"net.whatsapp.WhatsApp\",version=\"22.7.80\"} 9898794\nappstores_current_version_reviews_total{store=\"itunes\",country=\"us\",app=\"com.burbn.instagram\",version=\"228.0\"} 22806478\nappstores_current_version_reviews_total{store=\"itunes\",country=\"gb\",app=\"net.whatsapp.WhatsApp\",version=\"22.7.80\"} 2505037\n\n# HELP appstores_min_active_installs App minimum active installs since the launch of the app\n# TYPE appstores_min_active_installs gauge\nappstores_min_active_installs{store=\"gplay\",country=\"us\",app=\"com.instagram.android\",version=\"Varies with device\"} 1000000000\nappstores_min_active_installs{store=\"gplay\",country=\"gb\",app=\"com.whatsapp\",version=\"2.22.7.74\"} 5000000000\nappstores_min_active_installs{store=\"gplay\",country=\"us\",app=\"com.whatsapp\",version=\"2.22.7.74\"} 5000000000\n\n# HELP appstores_max_active_installs App maximum active installs since the launch of the app\n# TYPE appstores_max_active_installs gauge\nappstores_max_active_installs{store=\"gplay\",country=\"us\",app=\"com.instagram.android\",version=\"Varies with device\"} 4116093271\nappstores_max_active_installs{store=\"gplay\",country=\"gb\",app=\"com.whatsapp\",version=\"2.22.7.74\"} 7025049556\nappstores_max_active_installs{store=\"gplay\",country=\"us\",app=\"com.whatsapp\",version=\"2.22.7.74\"} 7025049556\n```\n\n## Requirements\n\n* NodeJS \u003e=18\n\n## Installation\n\n### Docker image\n\n#### Default with demo apps\n\nThe simplest way to test this Prometheus exporter is by using Docker.\n\nThe command below will exports the metrics from the default apps from the `src/examples/apps.json`.\n\n``` bash\nmkdir ./config\ncp -R ./src/examples/*.json ./config\n```\n\n``` bash\ndocker-compose up\n```\n\nNow, you can see the Prometheus metrics from your browser or command line at [http://localhost:9514/metrics][app-stores-prometheus-exporter-local]\n\n``` bash\ncurl http://localhost:9514/metrics\n```\n\nThere is also a health check available which you can access from your browser or command line at [http://localhost:9514/health][app-stores-prometheus-exporter-local]\n\n``` bash\ncurl -v http://localhost:9514/health\n```\n\n#### Customize with yours apps\n\nNow, try to test with your own app(s) by editing the config files.\n\nStart by copy the files from the `src/examples` folder to the `config` folder (root of the project):\n\n| From || To |\n|---|---|---|\n|`src/examples/apps.json`|=\u003e|`config/apps.json`|\n|`src/examples/config.json`|=\u003e|`config/config.json`|\n\nAdd now your app IDs for iOS or/and Android on the `apps.json` file and activate the metrics you wants to export in the `config.json` file.\n\nWhen it's done, restart the Docker container to see the changes:\n\n``` bash\ndocker-compose down\ndocker-compose up\n```\n\n``` bash\ncurl http://localhost:9514/metrics\n```\n\n### NPM install\n\n### From sources\n\n``` bash\ngit clone git@github.com:timoa/app-stores-prometheus-exporter.git\ncd app-stores-prometheus-exporter\nnpm install\n```\n\nCopy the configuration files\n\n| From || To |\n|---|---|---|\n|`src/examples/apps.json`|=\u003e|`config/apps.json`|\n|`src/examples/config.json`|=\u003e|`config/config.json`|\n\n``` bash\nmv ./src/examples/*.json ./config\n```\n\nStart the App Stores Prometheus Exporter:\n\n``` bash\nnpm start\n```\n\nThe console will output this message:\n\n``` bash\nPrometheus App Stores exporter is listening on http://localhost:9514\n```\n\n## Prometheus configuration\n\nTo configure Prometheus to pull the data of the App Stores exporter, you just need to add this job to your `prometheus.yml`:\n\n``` yaml\nglobal:\n[...]\n\nscrape_configs:\n  - job_name: 'appstores'\n    scrape_interval: 5m\n\n    static_configs:\n      - targets:\n        - localhost:9514\n```\n\n### Scrape interval\n\nSince the mobile app stores are using cache for the app details pages, it doesn't make sense to check the pages every 5s.\n\nDepending of the number of apps you will monitor, it will be better to set the scrape interval to 5m or more.\n\n## Tests\n\n### API\n\nYou can launch the Docker container or node.js app and test the endpoints with Postman:\n\n[![Run in Postman](https://run.pstmn.io/button.svg)](https://app.getpostman.com/run-collection/efda18b74fd7f4bc3034)\n\n### NPM\n\n#### Unit-tests\n\n``` bash\nnpm test\n```\n\n#### Coverage\n\n``` bash\nnpm run test:coverage\n```\n\n#### Functional\n\n``` bash\nnpm run test:functional\n```\n\n#### All the tests\n\n``` bash\nnpm run test:all\n```\n\n*Will be replace by `chai-http` soon.*\n\n## Dashboards\n\nThe following Grafana dashboards are available in the Grafana Dashboards repository and can be install in your own Grafana instance (just copy the ID to import it):\n\n* [Mobile App Stores - Per App][link-grafana-dashboard-per-app]\n* [Mobile App Stores - Score][link-grafana-dashboard-score]\n* [Mobile App Stores - Reviews][link-grafana-dashboard-reviews]\n* [Mobile App Stores - Versions][link-grafana-dashboard-versions]\n\n## TODO\n\n* Improve test coverage\n* Refactoring of the code to add more stores as plugins\n* Simplify multiple countries configuration\n* Add support to Mac App Store\n* Add support to Microsoft Store\n* Add support to Amazon Appstore\n* Add other metrics from official App Store and Google Play API (downloads, active installations, etc.)\n\n## Contributors\n\n\u003c!-- markdownlint-disable MD033 --\u003e\n\u003ca href=\"https://github.com/timoa/app-stores-prometheus-exporter/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=timoa/app-stores-prometheus-exporter\" /\u003e\n\u003c/a\u003e\n\nMade with [contrib.rocks](https://contrib.rocks).\n\n[sonarcloud]: https://sonarcloud.io/about\n[release-badge]: https://img.shields.io/github/v/release/timoa/app-stores-prometheus-exporter?logoColor=orange\n[release-url]: https://github.com/timoa/app-stores-prometheus-exporter/releases\n[github-badge]: https://github.com/timoa/app-stores-prometheus-exporter/workflows/Build/badge.svg\n[github-url]: https://github.com/timoa/app-stores-prometheus-exporter/actions?query=workflow%3ABuild\n[docker-badge]: https://img.shields.io/docker/pulls/timoa/app-stores-prometheus-exporter.svg\n[docker-url]: https://hub.docker.com/r/timoa/app-stores-prometheus-exporter\n[sonarcloud-url]: https://sonarcloud.io/dashboard?id=timoa_app-stores-prometheus-exporter\n[sonarcloud-status-badge]: https://sonarcloud.io/api/project_badges/measure?project=timoa_app-stores-prometheus-exporter\u0026metric=alert_status\n[sonarcloud-security-badge]: https://sonarcloud.io/api/project_badges/measure?project=timoa_app-stores-prometheus-exporter\u0026metric=security_rating\n[sonarcloud-maintainability-badge]: https://sonarcloud.io/api/project_badges/measure?project=timoa_app-stores-prometheus-exporter\u0026metric=sqale_rating\n[sonarcloud-bugs-badge]: https://sonarcloud.io/api/project_badges/measure?project=timoa_app-stores-prometheus-exporter\u0026metric=bugs\n[sonarcloud-codesmells-badge]: https://sonarcloud.io/api/project_badges/measure?project=timoa_app-stores-prometheus-exporter\u0026metric=code_smells\n[sonarcloud-coverage-badge]: https://sonarcloud.io/api/project_badges/measure?project=timoa_app-stores-prometheus-exporter\u0026metric=coverage\n[sonarcloud-duplicated-badge]: https://sonarcloud.io/api/project_badges/measure?project=timoa_app-stores-prometheus-exporter\u0026metric=duplicated_lines_density\n[badge-license]: https://img.shields.io/badge/License-MIT-blue.svg\n[image-dashboard-app]: https://raw.githubusercontent.com/timoa/app-stores-prometheus-exporter/master/doc/images/grafana-app-stores-per-app-screen.jpg\n[link-license]: https://raw.githubusercontent.com/timoa/app-stores-prometheus-exporter/master/LICENSE\n[app-stores-prometheus-exporter-local]: http://localhost:9514/metrics\n[link-google-play-scraper]: https://github.com/facundoolano/google-play-scraper\n[link-app-store-scraper]: https://github.com/facundoolano/app-store-scraper\n[link-grafana-dashboards]: https://grafana.com/orgs/timoa/dashboards\n[link-grafana-dashboard-per-app]: https://grafana.com/grafana/dashboards/10100\n[link-grafana-dashboard-score]: https://grafana.com/grafana/dashboards/10820\n[link-grafana-dashboard-reviews]: https://grafana.com/grafana/dashboards/10821\n[link-grafana-dashboard-versions]: https://grafana.com/grafana/dashboards/10822\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimoa%2Fapp-stores-prometheus-exporter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimoa%2Fapp-stores-prometheus-exporter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimoa%2Fapp-stores-prometheus-exporter/lists"}