PHPackages                             josantonius/mercadona-importer - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [CLI &amp; Console](/categories/cli)
4. /
5. josantonius/mercadona-importer

ActiveLibrary[CLI &amp; Console](/categories/cli)

josantonius/mercadona-importer
==============================

PHP command line interface (CLI) application to import products from Mercadona using their API.

v1.0.3(1y ago)1472MITPHPPHP ^8.1

Since Jan 25Pushed 1y ago1 watchersCompare

[ Source](https://github.com/josantonius/php-mercadona-importer)[ Packagist](https://packagist.org/packages/josantonius/mercadona-importer)[ GitHub Sponsors](https://github.com/Josantonius)[ RSS](/packages/josantonius-mercadona-importer/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (4)Dependencies (7)Versions (5)Used By (0)

PHP Mercadona Importer CLI
==========================

[](#php-mercadona-importer-cli)

[![Latest Stable Version](https://camo.githubusercontent.com/ea33087b42f250f0d87cbe972e616673b65b1d0539b069b536d7a9922aebf132/68747470733a2f2f706f7365722e707567782e6f72672f6a6f73616e746f6e6975732f6d65726361646f6e612d696d706f727465722f762f737461626c65)](https://packagist.org/packages/josantonius/mercadona-importer)[![License](https://camo.githubusercontent.com/cb3e54adf477686a59ca0b2649d340b9f7abca16087983b12c8ffeb174962609/68747470733a2f2f706f7365722e707567782e6f72672f6a6f73616e746f6e6975732f6d65726361646f6e612d696d706f727465722f6c6963656e7365)](LICENSE)[![Total Downloads](https://camo.githubusercontent.com/8e9f352014c4a7377948aea4a6febd569ec46a0d98a44f4c016d3e9109339240/68747470733a2f2f706f7365722e707567782e6f72672f6a6f73616e746f6e6975732f6d65726361646f6e612d696d706f727465722f646f776e6c6f616473)](https://packagist.org/packages/josantonius/mercadona-importer)[![CI](https://github.com/josantonius/php-mercadona-importer/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/josantonius/php-mercadona-importer/actions/workflows/ci.yml)[![PSR1](https://camo.githubusercontent.com/b502a899c9aec217e98971160f816f87346be272cf1a25cfa4793f2ee724bfc8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5053522d312d6635373034362e737667)](https://www.php-fig.org/psr/psr-1/)[![PSR4](https://camo.githubusercontent.com/d1c090de87e968254a6658528f3bfe9c9dad422d6047fd1323dc211560182c01/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5053522d342d3962353962362e737667)](https://www.php-fig.org/psr/psr-4/)[![PSR12](https://camo.githubusercontent.com/19c529c6dc0656dcc2a16c1a84af450b7bd0dc7b0571b8f17e4fc9f2414f8821/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5053522d31322d3161626339632e737667)](https://www.php-fig.org/psr/psr-12/)

Aplicación PHP de interfaz de línea de comandos (CLI) para importar productos de Mercadona utilizando su API.

---

- [Requerimientos](#requerimientos)
- [Instalación](#instalaci%C3%B3n)
- [Uso](#uso)
- [Configuración](#configuraci%C3%B3n)
- [Pruebas](#pruebas)
- [Tareas pendientes](#tareas-pendientes)
- [Registro de Cambios](#registro-de-cambios)
- [Contribuir](#contribuir)
- [Patrocinar](#patrocinar)
- [Licencia](#licencia)

---

Requerimientos
--------------

[](#requerimientos)

- Sistema operativo: Linux.
- Versiones PHP: 8.1 | 8.2 | 8.3.
- Docker (opcional)

Instalación
-----------

[](#instalación)

Clona el repositorio:

```
git clone https://github.com/josantonius/php-mercadona-importer.git
```

Accede al repositorio clonado:

```
cd php-mercadona-importer
```

Instala las dependencias:

```
composer install
```

O con Docker ejecutando:

```
make init
```

Uso
---

[](#uso)

Revisa la [configuración](#configuraci%C3%B3n) y ejecuta el script para iniciar la importación:

```
php mercadona-importer.php
```

O si prefieres usarlo con Docker, bastará con ejecutar:

```
make sync
```

[![Importación](.github/docs/images/import.png)](.github/docs/images/import.png)

Para cada detalle del producto se utiliza la siguiente estructura:

```
mixed value
array previous
int   timestamp
```

De esta manera los datos no se sobrescriben al actualizar los productos, permitiendo mantener un historial de cambios para cualquier detalle:

```
"unit_price": {
    "value": "7.90", // Valor actual
    "previous": [
        {
            "value": "7.40",  // Valor del día 20-01-2023
            "timestamp": 1674252044
        },
        {
            "value": "7.10",  // Valor del día 21-01-2023
            "timestamp": 1674338444
        }
    ],
    "timestamp": 1674511244 // 23-01-2023
}
```

[EJEMPLO DE PRODUCTO IMPORTADO](.github/docs/products/10379.json)

Configuración
-------------

[](#configuración)

Puedes modificar las opciones de importación editando el archivo [mercadona-importer.php](mercadona-importer.php) situado en la raíz del proyecto:

```
new MercadonaImporter(
    warehouse: 'svq1',
    timezone: 'Europe/Madrid',
    delayForError: 300000000,
    delayForRequests: 1300000,
    includeFullProduct: false,
    reimportFullProduct: false,
    logDirectory: __DIR__ . '/logs/',
    outputDirectory: __DIR__ . '/products/',
);
```

### `warehouse`

[](#warehouse)

```
warehouse: 'svq1'
```

Mercadona muestra diferentes versiones de la tienda dependiendo de la ubicación de los usuarios. Para ello asigna un almacén según el código postal desde el que se acceda.

Esto implica que, según el almacén desde el que se importe:

- El número de productos importados variará ya que dependerá de los que tengan habilitados.
- Un mismo producto puede tener diferentes detalles (peso, precio...) según la ubicación.

Algunos identificadores de centros logísticos que se utilizan son:

- `2343` - Murcia
- `2749` - Lleida
- `3532` - Valencia
- `3947` - Tarragona
- `3951` - Girona
- `3996` - Barcelona
- `4068` - Barcelona
- `4069` - Barcelona
- `4097` - Barcelona
- `4230` - Navarra
- `4267` - Álava
- `4354` - Almería
- `4385` - Castellón
- `4416` - Girona
- `4472` - Barcelona
- `4558` - Castellón
- `4697` - Álava
- `alc1` - Alicante y Murcia
- `bcn1` - Barcelona
- `mad1` - Madrid
- `mad2` - Madrid
- `svq1` - Sevilla, Cádiz y Huelva
- `vlc1` - Valencia

*Otros identificadores de almacenes facilitados por [Joel Taylor](https://github.com/jtayped), creador de [mercapy](https://github.com/jtayped/mercapy)*:

- `2183`, `2581`, `2623`, `3684`, `3968`, `4028`, `4115`, `4281`
- `4293`, `4308`, `4421`, `4436`, `4483`, `4537`, `4572`, `4644`

### `timezone`

[](#timezone)

```
timezone: 'Europe/Madrid'
```

Se utiliza para la hora de los archivos de logs:

```
[2023-01-24T18:32:45.876599+01:00] LOG.INFO: Retomando la importación desde la categoría 163.
```

### `delayForError`

[](#delayforerror)

```
delayForError: 300000000 // 300 segundos
```

Tiempo en microsegundos que se pausará la importación al recibir un error 429 por exceso de peticiones.

[![Importación error](.github/docs/images/error-import.png)](.github/docs/images/error-import.png)

### `delayForRequests`

[](#delayforrequests)

```
delayForRequests: 1300000 // 1,3 segundos
```

Intervalo en microsegundos en el que se realizarán las peticiones a la API de Mercadona.

### `includeFullProduct`

[](#includefullproduct)

```
includeFullProduct: false
```

Al importar una categoría se obtienen todos los productos de ella, sin embargo los productos tienen [detalles resumidos](.github/docs/products/category-product.json). Si se activa esta opción, se importarán los [detalles completos](.github/docs/products/full-product.json) del producto en **una sola ocasión** (al agregarlo por primera vez o si no se hizo en importaciones anteriores).

**IMPORTANTE** - Activar esta opción aumenta considerablemente el número de peticiones que se realizan y el tiempo de ejecución, ya que si todos los productos son nuevos se realizará una petición por cada uno de ellos:

- Importar con detalles resumidos: unas 150 peticiones y la importación dura unos 3-4 minutos.
- Importar con detalles completos: más de 5000 peticiones y la importación dura más de 4 horas.

### `reimportFullProduct`

[](#reimportfullproduct)

```
reimportFullProduct: false
```

Fuerza la importación de los detalles completos del producto aunque se hubiese hecho anteriormente.

**IMPORTANTE** - Las mismas consideraciones que con la opción `includeFullProduct`.

### `logDirectory`

[](#logdirectory)

```
logDirectory: __DIR__ . '/logs/'
```

Directorio donde se guardarán los logs.

### `outputDirectory`

[](#outputdirectory)

```
outputDirectory: __DIR__ . '/data/'
```

Directorio donde se guardarán los archivos importados.

Los productos se almacenan en formato JSON utilizando el ID del producto como nombre y se organizan por carpetas según el almacén que se utilice al importarlos:

`/data/svq1/39922.json`

`/data/mad1/39922.json`

`/data/bcn1/39922.json`

También se genera el archivo `/data/product_mapping.json` que contiene el catálogo completo de productos con información básica:

```
{
    "id": "39922",
    "ean": "8480000399229",
    "slug": "zumo-de-manzana",
    "name": "Zumo de manzana",
    "warehouses": ["svq1", "mad1", "bcn1"]
}
```

Pruebas
-------

[](#pruebas)

Run code standard tests with [PHPCS](https://github.com/squizlabs/PHP_CodeSniffer):

```
composer phpcs
```

Run [PHP Mess Detector](https://phpmd.org/) tests to detect inconsistencies in code style:

```
composer phpmd
```

Run all previous tests:

```
composer tests
```

Tareas pendientes
-----------------

[](#tareas-pendientes)

- Refactorizar la clase `MercadonaImporter`
- Desarrollar pruebas unitarias y funcionales
- Documentar métodos

Registro de Cambios
-------------------

[](#registro-de-cambios)

Los cambios detallados de cada versión se documentan en las [notas de la misma](https://github.com/josantonius/php-mercadona-api/releases).

Contribuir
----------

[](#contribuir)

Por favor, asegúrate de leer la [guía de contribución](.github/CONTRIBUTING.md), antes de hacer un pull request, comenzar una discusión o reportar un issue.

¡Gracias por [colaborar](https://github.com/josantonius/php-mercadona-api/graphs/contributors)! ❤️

Patrocinar
----------

[](#patrocinar)

Si este proyecto te ayuda a reducir el tiempo de desarrollo, [puedes patrocinarme](https://github.com/josantonius#sponsor) para apoyar mi trabajo 😊

Licencia
--------

[](#licencia)

Este repositorio tiene una licencia [MIT License](LICENSE).

Copyright © 2023-present, [Josantonius](https://github.com/josantonius#contact)

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance31

Infrequent updates — may be unmaintained

Popularity13

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 87% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~160 days

Total

4

Last Release

723d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/4b221283501ec8a9cbaefaf27821a91ae8ddd33bddf1fccc6c6815b7ad216ff1?d=identicon)[Josantonius](/maintainers/Josantonius)

---

Top Contributors

[![josantonius](https://avatars.githubusercontent.com/u/18104336?v=4)](https://github.com/josantonius "josantonius (20 commits)")[![jgrubiox](https://avatars.githubusercontent.com/u/28611065?v=4)](https://github.com/jgrubiox "jgrubiox (3 commits)")

---

Tags

climercadonamercadona-apimercadona-importerphpphpclimercadona-importermercadona-apicli-script

###  Code Quality

TestsPHPUnit

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/josantonius-mercadona-importer/health.svg)

```
[![Health](https://phpackages.com/badges/josantonius-mercadona-importer/health.svg)](https://phpackages.com/packages/josantonius-mercadona-importer)
```

###  Alternatives

[nunomaduro/termwind

It's like Tailwind CSS, but for the console.

2.5k239.8M286](/packages/nunomaduro-termwind)[pantheon-systems/terminus

A command line interface for Pantheon

3391.5M13](/packages/pantheon-systems-terminus)[mehrancodes/laravel-harbor

A CLI tool to Quickly create On-Demand preview environment for your apps.

9989.0k](/packages/mehrancodes-laravel-harbor)[mahocommerce/maho

Free and open source ecommerce platform, created in 2024 on the M1 platform, PHP 8.3+

1322.1k12](/packages/mahocommerce-maho)[alecrabbit/php-cli-snake

Lightweight cli spinner with zero dependencies

29211.3k5](/packages/alecrabbit-php-cli-snake)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
