{
    "openapi": "3.1.0",
    "info": {
        "title": "APK API",
        "version": "1.0.0",
        "description": "Google Play data API: 4 million apps (live and removed), developers, new releases, removals and title keywords. JSON, UTF-8, CORS enabled.\n\nEvery call costs 0–3 credits regardless of the number of rows (up to 100); /apps costs 1 credit per app. Plan credits are used first, then the prepaid balance; if a request fails on our side, the credits are returned. Remaining credits are in the `_credits` field of every response.\n\nDocumentation: https://apkapi.com/api-docs.php",
        "contact": {
            "url": "https://apkapi.com/api-docs.php"
        },
        "termsOfService": "https://apkapi.com/legal/terms.php"
    },
    "servers": [
        {
            "url": "https://apkapi.com/api/v1"
        }
    ],
    "security": [
        {
            "ApiKeyHeader": []
        },
        {
            "BearerAuth": []
        }
    ],
    "tags": [
        {
            "name": "Ứng dụng"
        },
        {
            "name": "Nhà phát triển"
        },
        {
            "name": "Thay đổi trên cửa hàng"
        },
        {
            "name": "Thị trường"
        }
    ],
    "paths": {
        "/account": {
            "get": {
                "operationId": "account",
                "tags": [
                    "Account"
                ],
                "summary": "Your plan, plan credits and balance, the credit reset date and the per-minute limit.",
                "description": "Free: no credits are charged.",
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/app": {
            "get": {
                "operationId": "app",
                "tags": [
                    "Ứng dụng"
                ],
                "summary": "Bản ghi ứng dụng đầy đủ: tiêu đề, mô tả, nội dung mới, lượt cài đặt (ngưỡng và số chính xác), đánh giá, số lượng đánh giá và nhận xét, phân bố sao, giá, mua hàng trong ứng dụng, quảng cáo, danh mục, xếp hạng nội dung, phiên bản, Android tối thiểu, ngày phát hành và cập nhật, biểu tượng, ảnh chụp màn hình, video, nhà phát triển và trang web. Với ứng dụng bị gỡ: dữ liệu lưu cuối cùng và ngày gỡ.",
                "description": "Bản ghi ứng dụng đầy đủ: tiêu đề, mô tả, nội dung mới, lượt cài đặt (ngưỡng và số chính xác), đánh giá, số lượng đánh giá và nhận xét, phân bố sao, giá, mua hàng trong ứng dụng, quảng cáo, danh mục, xếp hạng nội dung, phiên bản, Android tối thiểu, ngày phát hành và cập nhật, biểu tượng, ảnh chụp màn hình, video, nhà phát triển và trang web. Với ứng dụng bị gỡ: dữ liệu lưu cuối cùng và ngày gỡ.\n\nCost: 1 credit per call.",
                "x-credits": 1,
                "parameters": [
                    {
                        "name": "id",
                        "in": "query",
                        "required": true,
                        "description": "tên gói ứng dụng",
                        "schema": {
                            "type": "string"
                        },
                        "example": "com.whatsapp"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "402": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/apps": {
            "get": {
                "operationId": "apps",
                "tags": [
                    "Ứng dụng"
                ],
                "summary": "Tối đa 100 ứng dụng trong một lần gọi: GET ?ids=a,b,c hoặc POST với danh sách trong body (mỗi dòng một mục, hoặc JSON {\"ids\": […]}). 1 tín dụng cho mỗi ứng dụng; id chúng tôi không có sẽ trả về trong not_found.",
                "description": "Tối đa 100 ứng dụng trong một lần gọi: GET ?ids=a,b,c hoặc POST với danh sách trong body (mỗi dòng một mục, hoặc JSON {\"ids\": […]}). 1 tín dụng cho mỗi ứng dụng; id chúng tôi không có sẽ trả về trong not_found.\n\nCost: 1 credit per app.",
                "x-credits": 1,
                "parameters": [
                    {
                        "name": "ids",
                        "in": "query",
                        "required": true,
                        "description": "tên gói, cách nhau bằng dấu phẩy, tối đa 100",
                        "schema": {
                            "type": "string"
                        },
                        "example": "com.whatsapp,org.telegram.messenger"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "402": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            },
            "post": {
                "operationId": "apps_post",
                "tags": [
                    "Ứng dụng"
                ],
                "summary": "Same as GET, with package names in the request body (one per line, or JSON {\"ids\": [...]}).",
                "description": "Tối đa 100 ứng dụng trong một lần gọi: GET ?ids=a,b,c hoặc POST với danh sách trong body (mỗi dòng một mục, hoặc JSON {\"ids\": […]}). 1 tín dụng cho mỗi ứng dụng; id chúng tôi không có sẽ trả về trong not_found.\n\nCost: 1 credit per app.",
                "x-credits": 1,
                "parameters": [],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "402": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "text/plain": {
                            "schema": {
                                "type": "string"
                            },
                            "example": "com.whatsapp\norg.telegram.messenger"
                        }
                    }
                }
            }
        },
        "/search": {
            "get": {
                "operationId": "search",
                "tags": [
                    "Ứng dụng"
                ],
                "summary": "Tìm kiếm và lọc trên toàn bộ cơ sở dữ liệu. Cần ít nhất một bộ lọc. Không có q thì kết quả sắp xếp theo lượt cài đặt.",
                "description": "Tìm kiếm và lọc trên toàn bộ cơ sở dữ liệu. Cần ít nhất một bộ lọc. Không có q thì kết quả sắp xếp theo lượt cài đặt.\n\nCost: 2 credits per call.",
                "x-credits": 2,
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "description": "từ cần tìm trong tiêu đề, mô tả và tên nhà phát triển",
                        "schema": {
                            "type": "string"
                        },
                        "example": "photo editor"
                    },
                    {
                        "name": "category",
                        "in": "query",
                        "required": false,
                        "description": "ID danh mục, ví dụ GAME_PUZZLE (xem /v1/categories)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "developer_id",
                        "in": "query",
                        "required": false,
                        "description": "ID nhà phát triển Google Play",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "min_installs",
                        "in": "query",
                        "required": false,
                        "description": "lượt cài đặt tối thiểu (ngưỡng Google Play: 1000, 10000…)",
                        "schema": {
                            "type": "integer",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "max_installs",
                        "in": "query",
                        "required": false,
                        "description": "lượt cài đặt tối đa",
                        "schema": {
                            "type": "integer",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "min_score",
                        "in": "query",
                        "required": false,
                        "description": "đánh giá tối thiểu, 0–5",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "min_ratings",
                        "in": "query",
                        "required": false,
                        "description": "số đánh giá tối thiểu",
                        "schema": {
                            "type": "integer",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "free",
                        "in": "query",
                        "required": false,
                        "description": "true — chỉ miễn phí, false — chỉ trả phí",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "true",
                                "false"
                            ]
                        }
                    },
                    {
                        "name": "ads",
                        "in": "query",
                        "required": false,
                        "description": "true — có quảng cáo, false — không quảng cáo",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "true",
                                "false"
                            ]
                        }
                    },
                    {
                        "name": "iap",
                        "in": "query",
                        "required": false,
                        "description": "true — có mua hàng trong ứng dụng",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "true",
                                "false"
                            ]
                        }
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "description": "ngôn ngữ tiêu đề, mã ISO: en, de, pt…",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "released_from",
                        "in": "query",
                        "required": false,
                        "description": "phát hành từ ngày này, YYYY-MM-DD",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "released_to",
                        "in": "query",
                        "required": false,
                        "description": "phát hành đến ngày này, tính cả ngày đó",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "updated_from",
                        "in": "query",
                        "required": false,
                        "description": "cập nhật từ ngày này",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "updated_to",
                        "in": "query",
                        "required": false,
                        "description": "cập nhật đến ngày này, tính cả ngày đó",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "live (trên cửa hàng, mặc định), removed hoặc all",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "live",
                                "removed",
                                "all"
                            ]
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "relevance | installs | real_installs | score | ratings | reviews | released | updated | price",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "desc | asc",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "desc",
                                "asc"
                            ]
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "trang, từ 1",
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per",
                        "in": "query",
                        "required": false,
                        "description": "số dòng mỗi trang, 1–100 (mặc định 20)",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                        },
                        "example": 20
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "402": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/suggest": {
            "get": {
                "operationId": "suggest",
                "tags": [
                    "Ứng dụng"
                ],
                "summary": "Gợi ý theo phần đầu tiêu đề: 10 kết quả phổ biến nhất. Miễn phí.",
                "description": "Gợi ý theo phần đầu tiêu đề: 10 kết quả phổ biến nhất. Miễn phí.\n\nCost: 0 credits per call.",
                "x-credits": 0,
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "required": true,
                        "description": "phần đầu tiêu đề, từ 2 ký tự",
                        "schema": {
                            "type": "string"
                        },
                        "example": "whats"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "402": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/developer": {
            "get": {
                "operationId": "developer",
                "tags": [
                    "Nhà phát triển"
                ],
                "summary": "Một nhà phát triển và mọi ứng dụng của họ: số lượng (trên cửa hàng và bị gỡ), tổng lượt cài đặt, đánh giá trung bình, lần phát hành đầu, danh mục, trang web. Trong gói Business: email, điện thoại, địa chỉ và tên pháp lý.",
                "description": "Một nhà phát triển và mọi ứng dụng của họ: số lượng (trên cửa hàng và bị gỡ), tổng lượt cài đặt, đánh giá trung bình, lần phát hành đầu, danh mục, trang web. Trong gói Business: email, điện thoại, địa chỉ và tên pháp lý.\n\nCost: 2 credits per call.",
                "x-credits": 2,
                "parameters": [
                    {
                        "name": "id",
                        "in": "query",
                        "required": false,
                        "description": "ID nhà phát triển (từ ứng dụng: developer.id)",
                        "schema": {
                            "type": "string"
                        },
                        "example": "5191370068110375942"
                    },
                    {
                        "name": "name",
                        "in": "query",
                        "required": false,
                        "description": "hoặc tên chính xác của nhà phát triển",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "all (mặc định), live hoặc removed",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "live",
                                "removed",
                                "all"
                            ]
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "relevance | installs | real_installs | score | ratings | reviews | released | updated | price",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "trang, từ 1",
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per",
                        "in": "query",
                        "required": false,
                        "description": "số dòng mỗi trang, 1–100 (mặc định 20)",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                        },
                        "example": 20
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "402": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/new": {
            "get": {
                "operationId": "new",
                "tags": [
                    "Thay đổi trên cửa hàng"
                ],
                "summary": "Ứng dụng mới theo ngày phát hành đầu tiên, mới nhất ở trên.",
                "description": "Ứng dụng mới theo ngày phát hành đầu tiên, mới nhất ở trên.\n\nCost: 2 credits per call.",
                "x-credits": 2,
                "parameters": [
                    {
                        "name": "since",
                        "in": "query",
                        "required": false,
                        "description": "từ ngày này, YYYY-MM-DD (mặc định: 7 ngày trước)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "until",
                        "in": "query",
                        "required": false,
                        "description": "đến ngày này, tính cả ngày đó",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "category",
                        "in": "query",
                        "required": false,
                        "description": "ID danh mục, ví dụ GAME_PUZZLE (xem /v1/categories)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "min_installs",
                        "in": "query",
                        "required": false,
                        "description": "lượt cài đặt tối thiểu (ngưỡng Google Play: 1000, 10000…)",
                        "schema": {
                            "type": "integer",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "description": "ngôn ngữ tiêu đề, mã ISO: en, de, pt…",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "relevance | installs | real_installs | score | ratings | reviews | released | updated | price",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "trang, từ 1",
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per",
                        "in": "query",
                        "required": false,
                        "description": "số dòng mỗi trang, 1–100 (mặc định 20)",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                        },
                        "example": 20
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "402": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/removed": {
            "get": {
                "operationId": "removed",
                "tags": [
                    "Thay đổi trên cửa hàng"
                ],
                "summary": "Ứng dụng đã biến mất khỏi Google Play (không có ở cả 19 quốc gia chúng tôi kiểm tra), theo ngày gỡ. Bản ghi ứng dụng giữ dữ liệu cuối cùng.",
                "description": "Ứng dụng đã biến mất khỏi Google Play (không có ở cả 19 quốc gia chúng tôi kiểm tra), theo ngày gỡ. Bản ghi ứng dụng giữ dữ liệu cuối cùng.\n\nCost: 2 credits per call.",
                "x-credits": 2,
                "parameters": [
                    {
                        "name": "since",
                        "in": "query",
                        "required": false,
                        "description": "từ ngày này, YYYY-MM-DD (mặc định: 7 ngày trước)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "until",
                        "in": "query",
                        "required": false,
                        "description": "đến ngày này, tính cả ngày đó",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "category",
                        "in": "query",
                        "required": false,
                        "description": "ID danh mục, ví dụ GAME_PUZZLE (xem /v1/categories)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "min_installs",
                        "in": "query",
                        "required": false,
                        "description": "lượt cài đặt tối thiểu (ngưỡng Google Play: 1000, 10000…)",
                        "schema": {
                            "type": "integer",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "removed_at | installs | score",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "trang, từ 1",
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per",
                        "in": "query",
                        "required": false,
                        "description": "số dòng mỗi trang, 1–100 (mặc định 20)",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                        },
                        "example": 20
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "402": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/keywords": {
            "get": {
                "operationId": "keywords",
                "tags": [
                    "Thị trường"
                ],
                "summary": "Từ và cụm từ trong tiêu đề ứng dụng theo từng ngôn ngữ: bao nhiêu ứng dụng và nhà phát triển dùng chúng, bao nhiêu trong số đó mạnh (từ 100 nghìn lượt cài đặt), tổng lượt cài đặt, tỷ lệ của ứng dụng dẫn đầu và điểm cơ hội.",
                "description": "Từ và cụm từ trong tiêu đề ứng dụng theo từng ngôn ngữ: bao nhiêu ứng dụng và nhà phát triển dùng chúng, bao nhiêu trong số đó mạnh (từ 100 nghìn lượt cài đặt), tổng lượt cài đặt, tỷ lệ của ứng dụng dẫn đầu và điểm cơ hội.\n\nCost: 2 credits per call.",
                "x-credits": 2,
                "parameters": [
                    {
                        "name": "lang",
                        "in": "query",
                        "required": false,
                        "description": "ngôn ngữ, mặc định en",
                        "schema": {
                            "type": "string"
                        },
                        "example": "en"
                    },
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "description": "từ hoặc cụm từ",
                        "schema": {
                            "type": "string"
                        },
                        "example": "vpn"
                    },
                    {
                        "name": "phrase",
                        "in": "query",
                        "required": false,
                        "description": "true — chỉ cụm hai từ, false — chỉ từ đơn",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "true",
                                "false"
                            ]
                        }
                    },
                    {
                        "name": "min_apps",
                        "in": "query",
                        "required": false,
                        "description": "số ứng dụng tối thiểu",
                        "schema": {
                            "type": "integer",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "max_apps",
                        "in": "query",
                        "required": false,
                        "description": "số ứng dụng tối đa",
                        "schema": {
                            "type": "integer",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "opportunity | apps | installs | strong | devs | max_installs",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "desc | asc",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "desc",
                                "asc"
                            ]
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "trang, từ 1",
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per",
                        "in": "query",
                        "required": false,
                        "description": "số dòng mỗi trang, 1–100 (mặc định 20)",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                        },
                        "example": 20
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "402": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/categories": {
            "get": {
                "operationId": "categories",
                "tags": [
                    "Thị trường"
                ],
                "summary": "Tất cả danh mục với số ứng dụng và tổng lượt cài đặt. Miễn phí.",
                "description": "Tất cả danh mục với số ứng dụng và tổng lượt cài đặt. Miễn phí.\n\nCost: 0 credits per call.",
                "x-credits": 0,
                "parameters": [
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "live (trên cửa hàng, mặc định), removed hoặc all",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "live",
                                "removed",
                                "all"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "402": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/free_domains": {
            "get": {
                "operationId": "free_domains",
                "tags": [
                    "Thị trường"
                ],
                "summary": "Ứng dụng có tên miền trang web của nhà phát triển đang có thể đăng ký, kèm mức độ phổ biến. Gói Pro trở lên.",
                "description": "Ứng dụng có tên miền trang web của nhà phát triển đang có thể đăng ký, kèm mức độ phổ biến. Gói Pro trở lên.\n\nCost: 3 credits per call. Plan: Pro or higher.",
                "x-credits": 3,
                "parameters": [
                    {
                        "name": "category",
                        "in": "query",
                        "required": false,
                        "description": "ID danh mục, ví dụ GAME_PUZZLE (xem /v1/categories)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "min_installs",
                        "in": "query",
                        "required": false,
                        "description": "lượt cài đặt tối thiểu (ngưỡng Google Play: 1000, 10000…)",
                        "schema": {
                            "type": "integer",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "description": "live (trên cửa hàng, mặc định), removed hoặc all",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "live",
                                "removed",
                                "all"
                            ]
                        }
                    },
                    {
                        "name": "tld",
                        "in": "query",
                        "required": false,
                        "description": "vùng tên miền, ví dụ com",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "relevance | installs | real_installs | score | ratings | reviews | released | updated | price",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "trang, từ 1",
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per",
                        "in": "query",
                        "required": false,
                        "description": "số dòng mỗi trang, 1–100 (mặc định 20)",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                        },
                        "example": 20
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "402": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/charts": {
            "get": {
                "operationId": "charts",
                "tags": [
                    "Thị trường"
                ],
                "summary": "Bảng xếp hạng Google Play cho một quốc gia và danh mục: tối đa 200 vị trí, thay đổi thứ hạng so với ảnh chụp trước (change: tăng bao nhiêu bậc, \"new\" với mục mới), biểu tượng và lượt cài đặt.",
                "description": "Bảng xếp hạng Google Play cho một quốc gia và danh mục: tối đa 200 vị trí, thay đổi thứ hạng so với ảnh chụp trước (change: tăng bao nhiêu bậc, \"new\" với mục mới), biểu tượng và lượt cài đặt.\n\nCost: 2 credits per call.",
                "x-credits": 2,
                "parameters": [
                    {
                        "name": "country",
                        "in": "query",
                        "required": true,
                        "description": "quốc gia, mã ISO: US, DE, BR…",
                        "schema": {
                            "type": "string"
                        },
                        "example": "US"
                    },
                    {
                        "name": "category",
                        "in": "query",
                        "required": true,
                        "description": "danh mục, ví dụ GAME_PUZZLE",
                        "schema": {
                            "type": "string"
                        },
                        "example": "GAME_PUZZLE"
                    },
                    {
                        "name": "collection",
                        "in": "query",
                        "required": false,
                        "description": "free | paid | grossing",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "free",
                                "paid",
                                "grossing"
                            ]
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "trang, từ 1",
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per",
                        "in": "query",
                        "required": false,
                        "description": "số dòng mỗi trang, 1–100 (mặc định 20)",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                        },
                        "example": 20
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "402": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/rankings": {
            "get": {
                "operationId": "rankings",
                "tags": [
                    "Thị trường"
                ],
                "summary": "Mọi bảng xếp hạng có ứng dụng trong ảnh chụp mới nhất: quốc gia, danh mục, bộ sưu tập, vị trí; số bảng xếp hạng và quốc gia, và vị trí tốt nhất.",
                "description": "Mọi bảng xếp hạng có ứng dụng trong ảnh chụp mới nhất: quốc gia, danh mục, bộ sưu tập, vị trí; số bảng xếp hạng và quốc gia, và vị trí tốt nhất.\n\nCost: 1 credit per call.",
                "x-credits": 1,
                "parameters": [
                    {
                        "name": "id",
                        "in": "query",
                        "required": true,
                        "description": "tên gói ứng dụng",
                        "schema": {
                            "type": "string"
                        },
                        "example": "com.whatsapp"
                    },
                    {
                        "name": "country",
                        "in": "query",
                        "required": false,
                        "description": "chỉ một quốc gia",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "collection",
                        "in": "query",
                        "required": false,
                        "description": "free | paid | grossing",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "free",
                                "paid",
                                "grossing"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "402": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/availability": {
            "get": {
                "operationId": "availability",
                "tags": [
                    "Thị trường"
                ],
                "summary": "Các quốc gia có ứng dụng trên Google Play (từ hreflang trong sitemap của cửa hàng). Từ 190 quốc gia trở lên, trả về worldwide = true không kèm danh sách.",
                "description": "Các quốc gia có ứng dụng trên Google Play (từ hreflang trong sitemap của cửa hàng). Từ 190 quốc gia trở lên, trả về worldwide = true không kèm danh sách.\n\nCost: 1 credit per call.",
                "x-credits": 1,
                "parameters": [
                    {
                        "name": "id",
                        "in": "query",
                        "required": true,
                        "description": "tên gói ứng dụng",
                        "schema": {
                            "type": "string"
                        },
                        "example": "com.whatsapp"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "402": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/markets": {
            "get": {
                "operationId": "markets",
                "tags": [
                    "Thị trường"
                ],
                "summary": "Mức cạnh tranh thị trường dựa trên bảng xếp hạng miễn phí: ngưỡng vào top 100 và top 200 (lượt cài đặt của ứng dụng ở vị trí đó), tỷ lệ ứng dụng mới (12 tháng qua) và ứng dụng địa phương (≤3 quốc gia) trong top, và quy mô thị trường địa phương. Không tham số: mọi quốc gia; country: các danh mục của một quốc gia; category: một danh mục ở mọi quốc gia.",
                "description": "Mức cạnh tranh thị trường dựa trên bảng xếp hạng miễn phí: ngưỡng vào top 100 và top 200 (lượt cài đặt của ứng dụng ở vị trí đó), tỷ lệ ứng dụng mới (12 tháng qua) và ứng dụng địa phương (≤3 quốc gia) trong top, và quy mô thị trường địa phương. Không tham số: mọi quốc gia; country: các danh mục của một quốc gia; category: một danh mục ở mọi quốc gia.\n\nCost: 1 credit per call.",
                "x-credits": 1,
                "parameters": [
                    {
                        "name": "country",
                        "in": "query",
                        "required": false,
                        "description": "quốc gia, mã ISO",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "category",
                        "in": "query",
                        "required": false,
                        "description": "ID danh mục, ví dụ GAME_PUZZLE (xem /v1/categories)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "required": false,
                        "description": "entry100 | entry200 | new_share | local_share | local_apps | local_installs | local_new",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "order",
                        "in": "query",
                        "required": false,
                        "description": "desc | asc",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "desc",
                                "asc"
                            ]
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "description": "trang, từ 1",
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per",
                        "in": "query",
                        "required": false,
                        "description": "số dòng mỗi trang, 1–100 (mặc định 20)",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                        },
                        "example": 20
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "402": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/stats": {
            "get": {
                "operationId": "stats",
                "tags": [
                    "Thị trường"
                ],
                "summary": "Quy mô cơ sở dữ liệu: ứng dụng trên cửa hàng và bị gỡ, nhà phát triển, mới và bị gỡ trong 7 ngày qua, thời điểm cập nhật cuối. Miễn phí.",
                "description": "Quy mô cơ sở dữ liệu: ứng dụng trên cửa hàng và bị gỡ, nhà phát triển, mới và bị gỡ trong 7 ngày qua, thời điểm cập nhật cuối. Miễn phí.\n\nCost: 0 credits per call.",
                "x-credits": 0,
                "parameters": [],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    },
                    "400": {
                        "$ref": "#/components/responses/Error"
                    },
                    "401": {
                        "$ref": "#/components/responses/Error"
                    },
                    "402": {
                        "$ref": "#/components/responses/Error"
                    },
                    "403": {
                        "$ref": "#/components/responses/Error"
                    },
                    "429": {
                        "$ref": "#/components/responses/Error"
                    },
                    "502": {
                        "$ref": "#/components/responses/Error"
                    },
                    "503": {
                        "$ref": "#/components/responses/Error"
                    }
                }
            }
        },
        "/health": {
            "get": {
                "operationId": "health",
                "tags": [
                    "Account"
                ],
                "summary": "Service status. No key required.",
                "security": [],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/Ok"
                    }
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "ApiKeyHeader": {
                "type": "apiKey",
                "in": "header",
                "name": "X-API-Key"
            },
            "BearerAuth": {
                "type": "http",
                "scheme": "bearer"
            }
        },
        "schemas": {
            "Credits": {
                "type": "object",
                "properties": {
                    "cost": {
                        "type": "integer",
                        "description": "credits this request cost"
                    },
                    "remaining": {
                        "type": "integer",
                        "description": "credits left (plan + balance)"
                    }
                }
            },
            "Ok": {
                "type": "object",
                "required": [
                    "ok"
                ],
                "additionalProperties": true,
                "properties": {
                    "ok": {
                        "type": "boolean",
                        "const": true
                    },
                    "results": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "total": {
                        "type": "integer"
                    },
                    "page": {
                        "type": "integer"
                    },
                    "per": {
                        "type": "integer"
                    },
                    "pages": {
                        "type": "integer"
                    },
                    "_credits": {
                        "$ref": "#/components/schemas/Credits"
                    }
                }
            },
            "Error": {
                "type": "object",
                "required": [
                    "ok",
                    "error",
                    "code"
                ],
                "properties": {
                    "ok": {
                        "type": "boolean",
                        "const": false
                    },
                    "error": {
                        "type": "string"
                    },
                    "code": {
                        "type": "string",
                        "examples": [
                            "missing_api_key",
                            "invalid_api_key",
                            "account_blocked",
                            "insufficient_credits",
                            "rate_limited",
                            "invalid_param",
                            "invalid_request",
                            "not_found",
                            "upstream_error",
                            "service_unavailable"
                        ]
                    }
                }
            }
        },
        "responses": {
            "Ok": {
                "description": "Success",
                "headers": {
                    "X-Cache": {
                        "description": "HIT — served from cache, MISS — fresh query to the database",
                        "schema": {
                            "type": "string"
                        }
                    }
                },
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Ok"
                        }
                    }
                }
            },
            "Error": {
                "description": "Error",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        }
                    }
                }
            }
        }
    }
}