# Tokopaedi - Python Library for Tokopedia E-Commerce Data Extraction
 [](https://pepy.tech/projects/tokopaedi)  [](https://github.com/hilmiazizi/tokopaedi/blob/main/LICENSE) 
**Extract product data, reviews, and search results from Tokopedia with ease.**
Tokopaedi is a powerful Python library designed for scraping e-commerce data from Tokopedia, including product searches, detailed product information, and customer reviews. Ideal for developers, data analysts, and businesses looking to analyze Tokopedia's marketplace.

## Features
- **Product Search**: Search Tokopedia products by keyword with customizable filters (price, rating, condition, etc.).
- **Detailed Product Data**: Retrieve rich product details, including variants, pricing, stock, and media.
- **Customer Reviews**: Scrape product reviews with ratings, timestamps, and more.
- **Serializable Results**: Dataclass-based results with `.json()` for easy export to JSON or pandas DataFrames.
- **SearchResults Container**: Iterable and JSON-serializable container that supports enrich_details() and enrich_reviews() to automatically fetch product metadata and reviews for each item.
## Installation
Tokopaedi is available on PyPi: [https://pypi.org/project/tokopaedi/](https://pypi.org/project/tokopaedi/)
Install Tokopaedi via pip:
```bash
pip install tokopaedi
```
## Quick Start
```python
from tokopaedi import search, SearchFilters, get_product, get_reviews
import json
filters = SearchFilters(
bebas_ongkir_extra = True,
pmin = 15000000,
pmax = 25000000,
rt = 4.5
)
results = search("Asus Zenbook S14 32GB", max_result=10, debug=True, filters=filters)
results.enrich_details(debug=True)
results.enrich_reviews(max_result=50, debug=True)
with open('log.json','w') as f:
f.write(json.dumps(results.json(), indent=4))
print(results.json())
```
## 📘 API Overview
### 🔍 `search(keyword: str, max_result: int = 100, filters: Optional[SearchFilters] = None, debug: bool = False) -> SearchResults`
Search for products from Tokopedia.
**Parameters:**
- `keyword`: string keyword (e.g., `"logitech mouse"`).
- `max_result`: Expected number of results to return.
- `filters`: Optional `SearchFilters` instance to narrow search results.
- `debug`: Show debug message if True
**Returns:**
- A `SearchResults` instance (list-like object of `ProductSearchResult`), supporting `.json()` for easy export.
----------
### 📦 `get_product(product_id: Optional[Union[int, str]] = None, url: Optional[str] = None, debug: bool = False) -> ProductData`
Fetch detailed information for a given Tokopedia product.
**Parameters:**
- `product_id`: (Optional) The product ID returned from `search()`. If provided, this will take precedence over `url`.
- `url`: (Optional) The full product URL. Used only if `product_id` is not provided.
- `debug`: If `True`, prints debug output for troubleshooting.
> ⚠️ Either `product_id` or `url` must be provided. If both are given, `product_id` is used and `url` is ignored.
**Returns:**
- A `ProductData` instance containing detailed information such as product name, pricing, variants, media, stock, rating, etc.
- Supports `.json()` for easy serialization (e.g., to use with `pandas` or export as `.json`).
----------
### 🗣️ `get_reviews(product_id: Optional[Union[int, str]] = None, url: Optional[str] = None, max_count: int = 20, debug: bool = False) -> List[ProductReview]`
Scrape customer reviews for a given product.
**Parameters:**
- `product_id`: (Optional) The product ID to fetch reviews for. Takes precedence over `url` if both are provided.
- `url`: (Optional) Full product URL. Used only if `product_id` is not provided.
- `max_count`: Maximum number of reviews to fetch (default: 20).
- `debug`: Show debug messages if `True`.
> ⚠️ Either `product_id` or `url` must be provided.
**Returns:**
- A list of `ProductReview` objects.
- Each object supports `.json()` for serialization (e.g., for use with `pandas` or JSON export).
**Returns:**
- A new `SearchResults` object with `.product_detail` and `.product_reviews` fields filled in (if data was provided).
----------
### `SearchFilters` – Optional Search Filters
Use `SearchFilters` to refine your search results. All fields are optional. Pass it into the `search()` function via the `filters` argument.
#### Example:
```python
from tokopaedi import SearchFilters, search
filters = SearchFilters(
pmin=100000,
pmax=1000000,
condition=1, # 1 = New
is_discount=True,
bebas_ongkir_extra=True,
rt=4.5, # Minimum rating 4.5
latest_product=30 # Products listed in the last 30 days
)
results = search("logitech mouse", filters=filters)
```
#### Available Fields:
| Field | Type | Description | Accepted Values |
|----------------------|----------|---------------------------------------------------|----------------------------------|
| `pmin` | `int` | Minimum price (in IDR) | e.g., `100000` |
| `pmax` | `int` | Maximum price (in IDR) | e.g., `1000000` |
| `condition` | `int` | Product condition | `1` = New, `2` = Used |
| `shop_tier` | `int` | Type of shop | `2` = Mall, `3` = Power Shop |
| `rt` | `float` | Minimum rating | e.g., `4.5` |
| `latest_product` | `int` | Product recency filter | `7`, `30`, `90` |
| `bebas_ongkir_extra` | `bool` | Filter for extra free shipping | `True` / `False` |
| `is_discount` | `bool` | Only show discounted products | `True` / `False` |
| `is_fulfillment` | `bool` | Only Fulfilled by Tokopedia | `True` / `False` |
| `is_plus` | `bool` | Only Tokopedia PLUS sellers | `True` / `False` |
| `cod` | `bool` | Cash on delivery available | `True` / `False` |
## Product Details & Reviews Enrichment
Tokopaedi supports data enrichment to attach detailed product information and customer reviews directly to search results. This is useful when you want to go beyond basic search metadata and analyze full product details or customer feedback.
#### Example:
```python
# Enrich search results
results = search("Asus Zenbook S14 32GB", max_result=10, debug=True, filters=filters)
results.enrich_details(debug=True)
results.enrich_reviews(max_result=50, debug=True)
# Enrich product detail with reviews
product = get_product(url="https://www.tokopedia.com/asusrogindonesia/asus-tuf-a15-fa506ncr-ryzen-7-7435hs-rtx3050-4gb-8gb-512gb-w11-ohs-o365-15-6fhd-144hz-ips-rgb-blk-r735b1t-om-laptop-8gb-512gb-4970d?extParam=whid%3D17186756&aff_unique_id=&channel=others&chain_key=")
product.enrich_reviews(max_result=50, debug=True)
```
Enrichment methods are available on both the `SearchResults` container and individual `ProductData` objects:
### On `SearchResults`
- `enrich_details(debug: bool = False) -> None`
Enriches all items in the result with detailed product info.
- `debug`: If `True`, logs each enrichment step.
- `enrich_reviews(max_result: int = 10, debug: bool = False) -> None`
Enriches all items with customer reviews (up to `max_result` per product).
- `max_result`: Number of reviews to fetch for each product.
- `debug`: If `True`, logs the review enrichment process.
### On `ProductData`
- `enrich_details(debug: bool = False) -> None`
Enriches this specific product with detailed information.
- `enrich_reviews(max_result: int = 10, debug: bool = False) -> None`
Enriches this product with customer reviews.
This design allows for flexibility: enrich a full result set at once, or enrich individual items selectively as needed.
## Example: Scrape directly from Jupyter Notebook
Tokopaedi is fully compatible with Jupyter Notebook, making it easy to explore and manipulate data interactively. You can perform searches, enrich product details and reviews, and convert results to pandas DataFrames for analysis all from a notebook environment.
```python
from tokopaedi import search, SearchFilters, get_product, get_reviews
import json
import pandas as pd
from pandas import json_normalize
filters = SearchFilters(
bebas_ongkir_extra = True,
pmin = 15000000,
pmax = 25000000,
rt = 4.5
)
results = search("Asus Zenbook S14 32GB", max_result=10, debug=False, filters=filters)
# Enrich each result with product details and reviews
results.enrich_details(debug=False)
results.enrich_reviews(max_result=50, debug=False)
# Convert to DataFrame and preview important fields
df = json_normalize(results.json())
df[["product_id", "product_name", "price", "price_original","discount_percentage","rating","shop.name"]].head()
# Reviews
df.iloc[0].reviews
# Retrieve single product by url
product = get_product(url="https://www.tokopedia.com/asusrogindonesia/asus-tuf-a15-fa506ncr-ryzen-7-7435hs-rtx3050-4gb-8gb-512gb-w11-ohs-o365-15-6fhd-144hz-ips-rgb-blk-r735b1t-om-laptop-8gb-512gb-4970d?extParam=whid%3D17186756&aff_unique_id=&channel=others&chain_key=")
product.enrich_reviews(max_result=50, debug=True)
df = json_normalize(product.json())
df[["product_id", "product_name", "price", "price_original","discount_percentage","rating","shop.name"]].head()
```

## 📋 Changelog
### 0.2.2
- Add `ProductData.description` to extract description
### 0.2.1
- Fix image link on documentation for PyPi release
### 0.2.0
- Improve price accuracy with user spoofing (mobile pricing)
- Shop type conistency
- Minor extractor fix
- Replaced `ProductSearchResult` with `ProductData` for a unified model
- Removed `combine_data` and replace it with enrichment functions
- Added `.enrich_details(debug=False)` to `ProductData` and `SearchResults`
- Added `.enrich_reviews(max_result=10, debug=False)` to `ProductData` and `SearchResults`
### 0.1.3
- Added `url` parameter to `get_reviews()` and `get_product()` for direct product URL support
### 0.1.1
- Improved documentation and metadata
### 0.1.0
- Initial release with:
- `search()` function with filters
- `get_product()` for detailed product info
- `get_reviews()` for customer reviews
## Author
Created by [**Hilmi Azizi**](https://hilmiazizi.com). For inquiries, feedback, or collaboration, contact me at [root@hilmiazizi.com](mailto:root@hilmiazizi.com). You can also reach out via [GitHub Issues](https://github.com/hilmiazizi/tokopaedi/issues) for bug reports or feature suggestions.
## 📄 License
This project is licensed under the MIT License.
You are free to use, modify, and distribute this project with attribution. See the [LICENSE](https://github.com/hilmiazizi/tokopaedi/blob/main/LICENSE) file for more details.
Raw data
{
"_id": null,
"home_page": "https://github.com/hilmiazizi/tokopaedi",
"name": "tokopaedi",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.8",
"maintainer_email": null,
"keywords": "tokopedia, scraper, ecommerce, product, data, web-scraping, python, data-analysis, tokopedia-reviews",
"author": "Hilmi Azizi",
"author_email": "root@hilmiazizi.com",
"download_url": "https://files.pythonhosted.org/packages/91/88/4de3afab235b5159cd80aaaefb947300bbfb04a3b8801e7dfebb03f601d7/tokopaedi-0.2.2.tar.gz",
"platform": null,
"description": "\n# Tokopaedi - Python Library for Tokopedia E-Commerce Data Extraction\n [](https://pepy.tech/projects/tokopaedi)  [](https://github.com/hilmiazizi/tokopaedi/blob/main/LICENSE) \n\n**Extract product data, reviews, and search results from Tokopedia with ease.**\n\nTokopaedi is a powerful Python library designed for scraping e-commerce data from Tokopedia, including product searches, detailed product information, and customer reviews. Ideal for developers, data analysts, and businesses looking to analyze Tokopedia's marketplace.\n\n\n\n\n## Features\n- **Product Search**: Search Tokopedia products by keyword with customizable filters (price, rating, condition, etc.).\n- **Detailed Product Data**: Retrieve rich product details, including variants, pricing, stock, and media.\n- **Customer Reviews**: Scrape product reviews with ratings, timestamps, and more.\n- **Serializable Results**: Dataclass-based results with `.json()` for easy export to JSON or pandas DataFrames.\n- **SearchResults Container**: Iterable and JSON-serializable container that supports enrich_details() and enrich_reviews() to automatically fetch product metadata and reviews for each item.\n\n\n## Installation\nTokopaedi is available on PyPi: [https://pypi.org/project/tokopaedi/](https://pypi.org/project/tokopaedi/)\n\nInstall Tokopaedi via pip:\n\n```bash\npip install tokopaedi\n```\n\n## Quick Start\n```python\nfrom tokopaedi import search, SearchFilters, get_product, get_reviews\nimport json\n\nfilters = SearchFilters(\n bebas_ongkir_extra = True,\n pmin = 15000000,\n pmax = 25000000,\n rt = 4.5\n )\n\nresults = search(\"Asus Zenbook S14 32GB\", max_result=10, debug=True, filters=filters)\nresults.enrich_details(debug=True)\nresults.enrich_reviews(max_result=50, debug=True)\n\nwith open('log.json','w') as f:\n f.write(json.dumps(results.json(), indent=4))\nprint(results.json())\n```\n\n## \ud83d\udcd8 API Overview\n\n### \ud83d\udd0d `search(keyword: str, max_result: int = 100, filters: Optional[SearchFilters] = None, debug: bool = False) -> SearchResults`\n\nSearch for products from Tokopedia.\n\n**Parameters:**\n\n- `keyword`: string keyword (e.g., `\"logitech mouse\"`).\n \n- `max_result`: Expected number of results to return.\n \n- `filters`: Optional `SearchFilters` instance to narrow search results.\n \n- `debug`: Show debug message if True\n \n\n**Returns:**\n\n- A `SearchResults` instance (list-like object of `ProductSearchResult`), supporting `.json()` for easy export.\n \n\n----------\n\n### \ud83d\udce6 `get_product(product_id: Optional[Union[int, str]] = None, url: Optional[str] = None, debug: bool = False) -> ProductData`\n\nFetch detailed information for a given Tokopedia product.\n\n**Parameters:**\n\n- `product_id`: (Optional) The product ID returned from `search()`. If provided, this will take precedence over `url`.\n- `url`: (Optional) The full product URL. Used only if `product_id` is not provided.\n- `debug`: If `True`, prints debug output for troubleshooting.\n\n> \u26a0\ufe0f Either `product_id` or `url` must be provided. If both are given, `product_id` is used and `url` is ignored.\n\n**Returns:**\n\n- A `ProductData` instance containing detailed information such as product name, pricing, variants, media, stock, rating, etc.\n- Supports `.json()` for easy serialization (e.g., to use with `pandas` or export as `.json`).\n\n----------\n\n### \ud83d\udde3\ufe0f `get_reviews(product_id: Optional[Union[int, str]] = None, url: Optional[str] = None, max_count: int = 20, debug: bool = False) -> List[ProductReview]`\n\nScrape customer reviews for a given product.\n\n**Parameters:**\n\n- `product_id`: (Optional) The product ID to fetch reviews for. Takes precedence over `url` if both are provided.\n- `url`: (Optional) Full product URL. Used only if `product_id` is not provided.\n- `max_count`: Maximum number of reviews to fetch (default: 20).\n- `debug`: Show debug messages if `True`.\n\n> \u26a0\ufe0f Either `product_id` or `url` must be provided.\n\n**Returns:**\n\n- A list of `ProductReview` objects.\n- Each object supports `.json()` for serialization (e.g., for use with `pandas` or JSON export).\n\n**Returns:**\n\n- A new `SearchResults` object with `.product_detail` and `.product_reviews` fields filled in (if data was provided).\n \n----------\n### `SearchFilters` \u2013 Optional Search Filters\n\nUse `SearchFilters` to refine your search results. All fields are optional. Pass it into the `search()` function via the `filters` argument.\n\n#### Example:\n```python\nfrom tokopaedi import SearchFilters, search\n\nfilters = SearchFilters(\n pmin=100000,\n pmax=1000000,\n condition=1, # 1 = New\n is_discount=True,\n bebas_ongkir_extra=True,\n rt=4.5, # Minimum rating 4.5\n latest_product=30 # Products listed in the last 30 days\n)\n\nresults = search(\"logitech mouse\", filters=filters)\n```\n\n#### Available Fields:\n\n| Field | Type | Description | Accepted Values |\n|----------------------|----------|---------------------------------------------------|----------------------------------|\n| `pmin` | `int` | Minimum price (in IDR) | e.g., `100000` |\n| `pmax` | `int` | Maximum price (in IDR) | e.g., `1000000` |\n| `condition` | `int` | Product condition | `1` = New, `2` = Used |\n| `shop_tier` | `int` | Type of shop | `2` = Mall, `3` = Power Shop |\n| `rt` | `float` | Minimum rating | e.g., `4.5` |\n| `latest_product` | `int` | Product recency filter | `7`, `30`, `90` |\n| `bebas_ongkir_extra` | `bool` | Filter for extra free shipping | `True` / `False` |\n| `is_discount` | `bool` | Only show discounted products | `True` / `False` |\n| `is_fulfillment` | `bool` | Only Fulfilled by Tokopedia | `True` / `False` |\n| `is_plus` | `bool` | Only Tokopedia PLUS sellers | `True` / `False` |\n| `cod` | `bool` | Cash on delivery available | `True` / `False` |\n\n\n## Product Details & Reviews Enrichment\n\nTokopaedi supports data enrichment to attach detailed product information and customer reviews directly to search results. This is useful when you want to go beyond basic search metadata and analyze full product details or customer feedback.\n#### Example:\n```python\n# Enrich search results\nresults = search(\"Asus Zenbook S14 32GB\", max_result=10, debug=True, filters=filters)\nresults.enrich_details(debug=True)\nresults.enrich_reviews(max_result=50, debug=True)\n\n# Enrich product detail with reviews\nproduct = get_product(url=\"https://www.tokopedia.com/asusrogindonesia/asus-tuf-a15-fa506ncr-ryzen-7-7435hs-rtx3050-4gb-8gb-512gb-w11-ohs-o365-15-6fhd-144hz-ips-rgb-blk-r735b1t-om-laptop-8gb-512gb-4970d?extParam=whid%3D17186756&aff_unique_id=&channel=others&chain_key=\")\nproduct.enrich_reviews(max_result=50, debug=True)\n```\n\nEnrichment methods are available on both the `SearchResults` container and individual `ProductData` objects:\n\n### On `SearchResults`\n\n- `enrich_details(debug: bool = False) -> None` \n Enriches all items in the result with detailed product info. \n - `debug`: If `True`, logs each enrichment step.\n\n- `enrich_reviews(max_result: int = 10, debug: bool = False) -> None` \n Enriches all items with customer reviews (up to `max_result` per product). \n - `max_result`: Number of reviews to fetch for each product. \n - `debug`: If `True`, logs the review enrichment process.\n\n### On `ProductData`\n\n- `enrich_details(debug: bool = False) -> None` \n Enriches this specific product with detailed information.\n\n- `enrich_reviews(max_result: int = 10, debug: bool = False) -> None` \n Enriches this product with customer reviews.\n\nThis design allows for flexibility: enrich a full result set at once, or enrich individual items selectively as needed.\n\n\n## Example: Scrape directly from Jupyter Notebook\n\nTokopaedi is fully compatible with Jupyter Notebook, making it easy to explore and manipulate data interactively. You can perform searches, enrich product details and reviews, and convert results to pandas DataFrames for analysis all from a notebook environment.\n\n```python\nfrom tokopaedi import search, SearchFilters, get_product, get_reviews\nimport json\nimport pandas as pd\nfrom pandas import json_normalize\n\nfilters = SearchFilters(\n bebas_ongkir_extra = True,\n pmin = 15000000,\n pmax = 25000000,\n rt = 4.5\n )\n\nresults = search(\"Asus Zenbook S14 32GB\", max_result=10, debug=False, filters=filters)\n\n# Enrich each result with product details and reviews\nresults.enrich_details(debug=False)\nresults.enrich_reviews(max_result=50, debug=False)\n\n# Convert to DataFrame and preview important fields\ndf = json_normalize(results.json())\ndf[[\"product_id\", \"product_name\", \"price\", \"price_original\",\"discount_percentage\",\"rating\",\"shop.name\"]].head()\n\n# Reviews\ndf.iloc[0].reviews\n\n# Retrieve single product by url\nproduct = get_product(url=\"https://www.tokopedia.com/asusrogindonesia/asus-tuf-a15-fa506ncr-ryzen-7-7435hs-rtx3050-4gb-8gb-512gb-w11-ohs-o365-15-6fhd-144hz-ips-rgb-blk-r735b1t-om-laptop-8gb-512gb-4970d?extParam=whid%3D17186756&aff_unique_id=&channel=others&chain_key=\")\nproduct.enrich_reviews(max_result=50, debug=True)\ndf = json_normalize(product.json())\ndf[[\"product_id\", \"product_name\", \"price\", \"price_original\",\"discount_percentage\",\"rating\",\"shop.name\"]].head()\n```\n\n\n## \ud83d\udccb Changelog\n\n### 0.2.2\n- Add `ProductData.description` to extract description\n\n### 0.2.1\n- Fix image link on documentation for PyPi release\n\n### 0.2.0\n- Improve price accuracy with user spoofing (mobile pricing)\n- Shop type conistency\n- Minor extractor fix\n- Replaced `ProductSearchResult` with `ProductData` for a unified model\n- Removed `combine_data` and replace it with enrichment functions\n- Added `.enrich_details(debug=False)` to `ProductData` and `SearchResults`\n- Added `.enrich_reviews(max_result=10, debug=False)` to `ProductData` and `SearchResults`\n\n### 0.1.3\n- Added `url` parameter to `get_reviews()` and `get_product()` for direct product URL support\n\n### 0.1.1\n- Improved documentation and metadata\n\n### 0.1.0\n- Initial release with:\n - `search()` function with filters\n - `get_product()` for detailed product info\n - `get_reviews()` for customer reviews\n\n## Author\n\nCreated by [**Hilmi Azizi**](https://hilmiazizi.com). For inquiries, feedback, or collaboration, contact me at [root@hilmiazizi.com](mailto:root@hilmiazizi.com). You can also reach out via [GitHub Issues](https://github.com/hilmiazizi/tokopaedi/issues) for bug reports or feature suggestions.\n\n## \ud83d\udcc4 License\n\nThis project is licensed under the MIT License.\n\nYou are free to use, modify, and distribute this project with attribution. See the [LICENSE](https://github.com/hilmiazizi/tokopaedi/blob/main/LICENSE) file for more details.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A Python scraper for Tokopedia that supports filtered product search, detailed product information, and customer reviews with accurate mobile pricing and Jupyter Notebook compatibility.",
"version": "0.2.2",
"project_urls": {
"Documentation": "https://github.com/hilmiazizi/tokopaedi",
"Homepage": "https://github.com/hilmiazizi/tokopaedi",
"Repository": "https://github.com/hilmiazizi/tokopaedi"
},
"split_keywords": [
"tokopedia",
" scraper",
" ecommerce",
" product",
" data",
" web-scraping",
" python",
" data-analysis",
" tokopedia-reviews"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "63b85e08ee49154abbbb1cec3c6b93be4f983759a43e6d3140486903f47695a7",
"md5": "2c1665f25cab0b7b1287ed85345df954",
"sha256": "87343b4abc17afcb025849839c2eb7797ee85ed7a915de9a728b28ea40427d09"
},
"downloads": -1,
"filename": "tokopaedi-0.2.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "2c1665f25cab0b7b1287ed85345df954",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.8",
"size": 20572,
"upload_time": "2025-07-24T03:22:51",
"upload_time_iso_8601": "2025-07-24T03:22:51.555674Z",
"url": "https://files.pythonhosted.org/packages/63/b8/5e08ee49154abbbb1cec3c6b93be4f983759a43e6d3140486903f47695a7/tokopaedi-0.2.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "91884de3afab235b5159cd80aaaefb947300bbfb04a3b8801e7dfebb03f601d7",
"md5": "d1cc8b8fda804e17ff1b467197319959",
"sha256": "e3dd29381e56b7ee7c1b531a0a68fa6c6fb79afb3d9baa1d139f865ded24b73e"
},
"downloads": -1,
"filename": "tokopaedi-0.2.2.tar.gz",
"has_sig": false,
"md5_digest": "d1cc8b8fda804e17ff1b467197319959",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.8",
"size": 20997,
"upload_time": "2025-07-24T03:22:53",
"upload_time_iso_8601": "2025-07-24T03:22:53.042045Z",
"url": "https://files.pythonhosted.org/packages/91/88/4de3afab235b5159cd80aaaefb947300bbfb04a3b8801e7dfebb03f601d7/tokopaedi-0.2.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-24 03:22:53",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "hilmiazizi",
"github_project": "tokopaedi",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "tokopaedi"
}