Automated Car Price Scraper

Job ID: 39562599

Budget: $30 – $250 USD

1. Overview
I need a Python script that runs automatically once a day via GitHub Actions, extracting the prices of every version of the new-car models for nine brands (Honda, Ford, Kia, Peugeot, Jeep, Fiat, Ram, Omoda, Jaecoo) offered by three Chilean dealerships (Bruno Fritsch, Salazar Israel and Astara).
The scraper must go two levels deep — brand page → models → versions — and capture the four price points shown for each version.

2. Seed URLs
Dealership Brands covered
Bruno Fritsch Jeep, Fiat, Ram, Peugeot, Omoda‑Jaecoo
https://www.brunofritsch.cl/jeep
https://www.brunofritsch.cl/fiat
https://www.brunofritsch.cl/ram
https://www.brunofritsch.cl/peugeot
https://www.brunofritsch.cl/omoda-jaecoo
Salazar Israel Fiat, Ford, Honda, Jeep, Kia, Peugeot, Ram
https://www.salazarisrael.cl/vehiculos?marca=fiat
https://www.salazarisrael.cl/vehiculos?marca=ford
https://www.salazarisrael.cl/vehiculos?marca=honda
https://www.salazarisrael.cl/vehiculos?marca=jeep
https://www.salazarisrael.cl/vehiculos?marca=kia
https://www.salazarisrael.cl/vehiculos?marca=peugeot
https://www.salazarisrael.cl/vehiculos?marca=ram
Astara Retail Jeep, Ram, Fiat
https://astararetail.cl/jeep/
https://astararetail.cl/ram/
https://astararetail.cl/fiat/

Each seed page lists all models for that brand; some pages are paginated (e.g. Salazar Israel).

3. Data to capture (per version)
Marca (Brand)

Modelo (Model)

Versión (Trim / Version)

Page URL where the price was scraped

Precio de lista (List Price)

Precio con compra inteligente (“smart financing” price)

Precio con crédito convencional (“standard loan” price)

Precio con todo medio de pago (“all-payment-methods” price)

Execution date (timestamp)

Note: The Spanish price labels (Precio de lista, Precio con compra inteligente, etc.) must be kept exactly as shown on the websites; the English phrases in parentheses are reference only.

4. Technical flow
Open each seed URL.

Enumerate all models (handling pagination where present).

Open each model and enumerate every version.

Bruno Fritsch: the four prices are visible in the “Precio” tab.

Salazar Israel: click the "i" icon to open a modal and obtain Precio de lista; the other three prices are on the card.

Write the data to a CSV named YYYY-MM-DD_precios.csv.

Upload the daily CSV to a supplied Google Drive folder.

Send an e-mail summarising success/failure after each run.

5. Technical requirements
Language: Python 3.x

Libraries: Selenium or Playwright (your choice) plus BeautifulSoup/lxml/pandas.

Headless: must run in GitHub Actions.

Proxies: none – script must work without proxies.

Max run time: ≤ 10 min.

Robustness:

Handle pagination.

Reasonable retries and timeouts.

If a price is missing, record NA and log.

Code quality: PEP-8, clear inline comments, README in English.

6. Deliverables
Complete Python script + requirements.txt

GitHub Actions workflow (cron @daily)

English README with installation/maintenance instructions

Inline documentation

First successful scrape within 10 days

7. Budget & Timeline
Fixed price: USD 150, broken down as:

USD 40 for the Salazar Israel scraper

USD 40 for the Bruno Fritsch scraper

USD 40 for the Astara scraper

USD 30 for consolidating the final script and configuring the GitHub Actions workflow

Deadline: 10 days after contract start

Bonus possible for early, error-free delivery

8. Proposal evaluation
Proven portfolio of similar JS-heavy scraping (Selenium/Playwright)

Competitive pricing

Clear work plan and milestones

Rating ≥ 4.9 and positive feedback on related projects

9. How to apply
Links to similar scraping projects

Short technical outline (libraries, pagination/modal handling)

Confirmation that you can meet the budget and deadline

Any questions you may have
Related categories: Python Web Scraping Selenium GitHub