## AmazonProduct


An `amazon_product` job, which scrapes one product page.


Usage

``` python
AmazonProduct()
```


The model takes no `start_page` or `pages`, because the API bills them with no effect. [What a live test shows about the Amazon models](https://github.com/ozanozbeker/oxyscraper/blob/main/docs/research/live-amazon.md) records the run that checked it.


## Attributes


`query: Annotated[str, Field(max_length=10)]`  
An ASIN. One longer than 10 characters raises, because the API bills a 404 page for it. The API rejects a shorter one, or one with lowercase letters, for free, and bills a 404 page for one that does not exist.

`domain: _AmazonDomain | None`  
The marketplace, `com` by default. `co.za` works, although no docs page lists it, and every `cn` job faulted.

`locale: _AmazonLocale | None`  
The page's language, which the API rejects for free unless the domain lists it. Without it, `ae` returns its Arabic page.

`geo_location: str | None`  
A postal code inside the domain's country, or an ISO 3166-1 alpha-2 code outside it, which the API rejects for free if it does not fit. `ae`, `com.be`, `eg`, `ie`, `pl`, `sa`, `se` and `sg` run no check, so a wrong value may bill. `99999` on `com` faults after 120 seconds.

`user_agent_type: _UserAgentType | None`  
It raises with `render`, because a rendered job ignores it and still bills.

`autoselect_variant: bool | None`  
Adds `th=1&psc=1` to the product URL, so the page shows a variant's price and buybox.

`currency: _AmazonCurrency | None`  
The currency of the prices, which the API rejects for free unless the domain lists it. On `com`, any currency but USD raises without a 2-letter country code in `geo_location`, because the API bills prices in USD then.
