Skip to content

Migración de MWS a SP-API

Resumen rápido

MWS (Marketplace Web Service) fue la primera API de Amazon para vendedores. Era XML/SOAP, difícil de usar y ya está completamente deprecada. SP-API es su reemplazo: REST/JSON, más moderna, con mejores herramientas. Si tienes código que usa MWS, ya no funciona. Si encuentras scripts legacy de MWS en un proyecto, hay que reescribirlos usando SP-API.


Conceptos importantes

  • MWS: La API antigua de Amazon (XML, SOAP). Completamente deprecated desde 2024. No admite nuevas conexiones.
  • SP-API: La API actual. REST/JSON, con OAuth 2.0 (LWA) para autenticación.
  • Migration: El proceso de reemplazar código MWS por código SP-API. No es una simple sustitución 1:1 — las estructuras de datos son distintas.
  • Breaking changes: MWS respondía en XML; SP-API responde en JSON. Las funciones no son equivalentes directas.
  • Deprecation: Algunas categorías de MWS dejaron de funcionar antes que otras. El calendario fue:
    • Fulfillment y Orders: deprecado en septiembre de 2023
    • Todo lo demás: deprecado en abril de 2024

Diferencias principales: MWS vs SP-API

AspectoMWS (antiguo)SP-API (actual)
ProtocoloSOAP / XMLREST / JSON
AutenticaciónAWS Signature v2 + MWS Auth TokenOAuth 2.0 (LWA)
DocumentaciónDifícil, poco actualizadaMejor estructurada
SoporteDeprecado, sin actualizacionesActivo
LenguajesSDKs legacySDKs modernos + Postman
PaginaciónNextToken (similar)NextToken (igual concepto)
Rate limitsQuota systemToken bucket algorithm

Equivalencia de APIs

MWS APISP-API equivalente
OrdersOrders API
ProductsCatalog Items API
ReportsReports API
Feeds (Inventory/Price)Feeds API + Listings API
FulfillmentOrders API (FBM confirm)
FinancesFinances API
SubscriptionsNotifications API

Cómo funciona la migración

Proceso recomendado (5 pasos)

1. Análisis del código existente

Documenta qué funciones MWS usa cada parte del sistema:

  • ¿Qué endpoints MWS se llaman?
  • ¿Qué datos se usan de cada respuesta?
  • ¿Con qué frecuencia se llama cada función?
  • ¿Hay procesamiento de XML que habrá que cambiar a JSON?

2. Optimización del diseño

La migración es una oportunidad para mejorar la arquitectura:

  • ¿Se puede reemplazar polling por Notifications API?
  • ¿Se puede usar Reports API en vez de llamadas individuales repetidas?
  • ¿Hay bucles ineficientes que se pueden simplificar?

3. Creación de nueva app en Developer Central

Si tienes una app MWS, necesitas crear una nueva app SP-API:

  1. Ir a sellercentral.amazon.es → Apps y servicios → Desarrollar apps
  2. Crear perfil de desarrollador (si no lo tienes)
  3. Crear nueva aplicación → obtener client_id y client_secret de LWA
  4. Obtener el refresh_token autorizando la app desde Seller Central

4. Reescritura de funciones

Reemplazar cada llamada MWS por su equivalente SP-API. Ejemplo:

MWS (XML, antiguo)

python
# MWS: ListOrders
import boto3
# ... configurar con AWS keys ...
response = mws_client.list_orders(
    marketplace_id="A1RKKUPIHCS9HS",
    created_after=date_str,
)
# Parsear XML de la respuesta
import xml.etree.ElementTree as ET
orders = ET.fromstring(response.text).findall(".//Order")

SP-API (JSON, actual)

python
# SP-API: GetOrders
import requests

response = requests.get(
    "https://sellingpartnerapi-eu.amazon.com/orders/v0/orders",
    headers={"x-amz-access-token": access_token},
    params={
        "MarketplaceIds": "A1RKKUPIHCS9HS",
        "CreatedAfter": date_str,
    },
)
orders = response.json()["payload"]["Orders"]

5. Documentar el nuevo sistema

Aprovecha la migración para documentar el código nuevo: qué hace cada función, qué endpoints llama, qué credenciales necesita.


Pasos prácticos para migrar Orders

Antes (MWS)

python
# Típico código MWS para obtener órdenes
def get_orders_mws(mws_access_key, mws_secret_key, seller_id, marketplace_id, start_date):
    # ... XML payload construction ...
    # ... AWS Signature v2 ...
    # ... XML response parsing ...
    pass  # Código XML verboso y frágil

Después (SP-API)

python
import requests
from datetime import datetime, timedelta

def get_orders_sp_api(access_token: str, marketplace_id: str) -> list:
    """Obtiene los pedidos de los últimos 30 días."""
    endpoint = "https://sellingpartnerapi-eu.amazon.com"
    headers = {"x-amz-access-token": access_token}

    created_after = (datetime.utcnow() - timedelta(days=30)).strftime("%Y-%m-%dT%H:%M:%SZ")
    all_orders = []
    next_token = None

    while True:
        params = {"MarketplaceIds": marketplace_id, "CreatedAfter": created_after}
        if next_token:
            params["NextToken"] = next_token

        response = requests.get(f"{endpoint}/orders/v0/orders", headers=headers, params=params)
        response.raise_for_status()
        payload = response.json().get("payload", {})

        all_orders.extend(payload.get("Orders", []))
        next_token = payload.get("NextToken")
        if not next_token:
            break

    return all_orders

Errores comunes en la migración

  • Migrar línea a línea sin optimizar: No copies la lógica MWS sin cuestionarla. MWS era verbosa; la migración es una oportunidad de simplificar.
  • Olvidar que las estructuras JSON son distintas: Los campos en SP-API se llaman diferente que en MWS. Por ejemplo, en MWS AmazonOrderId y en SP-API AmazonOrderId (puede coincidir, pero no siempre).
  • No actualizar el sistema de autenticación: MWS usaba AWSAccessKey + SecretKey + MWSAuthToken. SP-API usa client_id + client_secret + refresh_token. Son mecanismos completamente distintos.
  • Esperar que los feeds XML sean iguales: Los feeds de Feeds API de SP-API usan el mismo formato XML de Amazon Envelope, pero el proceso de envío es diferente (ver 10-feeds-api.md).
  • No revisar las apps de terceros: Si usas plugins o conectores externos (Shopify, WordPress, etc.) que se basaban en MWS, también debes actualizarlos o reemplazarlos.

Qué debo saber antes de programarlo

  • MWS ya no acepta nuevas conexiones. Si intentas crear credenciales MWS ahora, no puedes. Solo SP-API está disponible para proyectos nuevos.
  • Si encuentras código MWS en un proyecto activo, está funcionando con credenciales antiguas que ya no se pueden regenerar. Si se pierden esas credenciales, no hay vuelta atrás.
  • La documentación oficial de MWS ya no está activa. Si necesitas entender qué hacía una función MWS, tendrás que deducirlo del código o consultar cachés históricas.
  • Amazon nunca volverá a reactivar MWS. Es una migración obligatoria y permanente.

Pendiente de revisar

  • ¿Hay alguna API de SP-API que equivalga a Finances API de MWS para datos de settlement completos?
  • ¿Los feeds de MWS y los feeds de SP-API son compatibles en formato XML?
  • ¿Qué pasa con las apps MWS que tenían roles específicos de PII? ¿Se pueden migrar directamente?

Documentación basada en más de 40 tutoriales sobre Amazon SP-API. Actualizada a junio de 2026.