> ## Documentation Index
> Fetch the complete documentation index at: https://pricepirate.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Job abfragen und Ergebnisse abrufen

> Rufen Sie einen Job über seine ID ab. Fragen Sie alle 1-2 Sekunden ab, bis `status` den Wert `completed` oder `failed` hat. Das Array `results` ist vorhanden, sobald der Job nicht mehr `pending` ist. Die Antwortstruktur ist unabhängig davon, welche Quelle den Job erstellt hat.



## OpenAPI

````yaml /price-data/global.de.yaml get /jobs/{job_id}
openapi: 3.0.3
info:
  title: Global EAN/GTIN Price Data API
  version: 1.0.0
  description: >-
    Eine Barcode-Anfrage liefert Marktdaten aus mehreren Quellen. Diese API
    bündelt fünf Preisquellen - Klarna, PriceRunner, Idealo, Google Shopping und
    Allegro - hinter einem universellen Endpunkt und einem einheitlichen
    Antwortschema. Senden Sie eine EAN / GTIN / UPC, wählen Sie eine Quelle und
    ein Land, und erhalten Sie Händlerangebote für genau dieses Produkt: Preis,
    Versand, Gesamtpreis, Artikelzustand, Verfügbarkeit,
    Gutschein-/Rückgabehinweise und Shop-Bewertungen in einer gemeinsamen
    JSON-Struktur. Die API deckt 29 Länder und 47 Quelle-Land-Kombinationen ab.


    ## Quellen und Abdeckung

    - **klarna** — `at, dk, fi, fr, de, ie, it, nl, no, es, se, us` -
    **pricerunner** — `uk, se, dk` - **idealo** — `de, at` - **google-shopping**
    — `us, nl, de, fr, uk, es, it, be, at, ch, pl, se, dk,
      no, fi, pt, ie, cz, hu, ro, gr, sk, hr, bg, au, ca, br, in, jp`
    - **allegro** — `pl`


    ## So funktioniert es (asynchrone Jobs)

    1. **Job erstellen** - rufen Sie den universellen Endpunkt
       `POST /universal/search-by-gtin` mit `source`, `country` und einem
       Barcode auf. Alternativ nutzen Sie einen quellenspezifischen Endpunkt.
       Sie erhalten eine `job_id`.
    2. **Ergebnisse abfragen** - rufen Sie `GET /jobs/{job_id}` alle 1-2
       Sekunden auf, bis `status` den Wert `completed` hat. Live-Abfragen sind
       typischerweise nach wenigen Sekunden bereit.

    Barcodes folgen dem GTIN-Standard (8-14 Ziffern) und sind mit EAN, UPC und
    JAN kompatibel. Das `result`-Objekt hat über alle Quellen dieselbe Struktur.
    Felder, die eine Quelle nicht liefert, werden als `null` zurückgegeben. Bei
    Google Shopping basieren `price_min`, `price_avg` und `price_max` auf dem
    Gesamtpreis (Artikel + Versand). Bei anderen Quellen beziehen sie sich auf
    den Artikelpreis. Idealo bietet zusätzlich `search-by-id`, `search-by-term`
    und `search-by-url`. `search-by-term` liefert passende Listings mit
    `price_min` und `offers_count`, aber mit leerem `offers`-Array. Nutzen Sie
    `search-by-id`, um ein Listing mit allen Angeboten abzurufen.
servers:
  - url: https://<rapidapi-host>.p.rapidapi.com
security:
  - rapidApiKey: []
tags:
  - name: Universell
    description: Ein Endpunkt, der eine Abfrage an jede Quelle weiterleitet.
  - name: Klarna
    description: Preisdaten aus dem Klarna-Shopping-Netzwerk.
  - name: PriceRunner
    description: Preisdaten aus dem PriceRunner-Vergleichsnetzwerk.
  - name: Idealo
    description: Idealo-Preisvergleichsdaten (Barcode, ID, Suchbegriff, URL).
  - name: Google Shopping
    description: Preisdaten aus Google Shopping.
  - name: Allegro
    description: Marktplatzdaten aus Allegro (Polen).
  - name: Jobs
    description: Job-Ergebnisse abrufen.
  - name: System
    description: Dienststatus.
paths:
  /jobs/{job_id}:
    get:
      tags:
        - Jobs
      summary: Job abfragen und Ergebnisse abrufen
      description: >-
        Rufen Sie einen Job über seine ID ab. Fragen Sie alle 1-2 Sekunden ab,
        bis `status` den Wert `completed` oder `failed` hat. Das Array `results`
        ist vorhanden, sobald der Job nicht mehr `pending` ist. Die
        Antwortstruktur ist unabhängig davon, welche Quelle den Job erstellt
        hat.
      operationId: /jobs/{job_id}
      parameters:
        - name: job_id
          in: path
          required: true
          description: Die `job_id`, die beim Erstellen des Jobs zurückgegeben wurde.
          schema:
            type: string
          example: f3a1c2b4-5d6e-7f80-9a1b-2c3d4e5f6071
        - $ref: '#/components/parameters/RapidApiHostHeader'
      responses:
        '200':
          description: Job-Status (mit Ergebnissen nach Abschluss)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobStatusResponse'
        '404':
          description: Job nicht gefunden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                notFound:
                  value:
                    error: true
                    message: Job not found
components:
  parameters:
    RapidApiHostHeader:
      name: x-rapidapi-host
      in: header
      required: true
      description: Ihr RapidAPI-Host.
      schema:
        type: string
        example: <rapidapi-host>
  schemas:
    JobStatusResponse:
      type: object
      required:
        - error
        - job_id
        - status
        - source
        - operation
        - country
        - created_at
      properties:
        error:
          type: boolean
          example: false
        job_id:
          type: string
          example: f3a1c2b4-5d6e-7f80-9a1b-2c3d4e5f6071
        status:
          type: string
          description: >-
            Lebenszyklusstatus des Jobs. `results` ist enthalten, sobald der
            Status nicht mehr `pending` ist.
          enum:
            - pending
            - completed
            - failed
          example: completed
        source:
          type: string
          description: Die Quelle, die das Ergebnis geliefert hat.
          example: klarna
        operation:
          type: string
          enum:
            - search-by-gtin
            - search-by-id
            - search-by-term
            - search-by-url
          example: search-by-gtin
        country:
          type: string
          example: de
        created_at:
          type: string
          format: date-time
          example: '2026-06-04T12:00:00.000Z'
        results:
          type: array
          description: Vorhanden, sobald der Job nicht mehr `pending` ist.
          items:
            $ref: '#/components/schemas/JobResultItem'
    ErrorResponse:
      type: object
      required:
        - error
        - message
      properties:
        error:
          type: boolean
          example: true
        message:
          type: string
          example: country is required
    JobResultItem:
      type: object
      required:
        - query
        - status
        - result
      properties:
        query:
          type: string
          description: >-
            Barcode, ID, Suchbegriff oder URL, auf die sich dieses Ergebnis
            bezieht.
          example: '4013474101469'
        status:
          type: string
          enum:
            - found
            - not_found
            - error
          example: found
        result:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/PriceResult'
          description: >-
            Produkt- oder Listing-Ergebnis, oder `null` bei `not_found` /
            `error`.
        error:
          type: string
          description: >-
            Feste öffentliche Fehlermeldung, die nur bei `status: error`
            zurückgegeben wird. Rohe Provider- oder Laufzeitdiagnosen werden
            entfernt.
          enum:
            - Service temporarily unavailable
          example: Service temporarily unavailable
        errorCode:
          type: string
          description: >-
            Sicherer maschinenlesbarer Fehlercode. Nur vorhanden, wenn `status`
            den Wert `error` hat.
          enum:
            - blocked
            - internal_error
          example: blocked
    PriceResult:
      type: object
      description: >-
        Einheitliches Produkt- oder Listing-Ergebnis. Abrufe mit vollständigen
        Angeboten enthalten Händlerangebote. Idealo-`search-by-term`-Zeilen
        lassen `offers` leer. Felder, die eine Quelle nicht liefert, werden als
        `null` zurückgegeben.
      required:
        - id
        - name
        - url
        - image_urls
        - price_min
        - offers_count
        - offers
        - source
        - country
        - fetched_at
      properties:
        id:
          type: string
          description: Quellenspezifische Produkt- oder Listing-ID.
          example: '208201234'
        name:
          type: string
          example: Example Product Name
        url:
          type: string
          example: https://www.klarna.com/de/shopping/pl/cl123/208201234/
        ean:
          type: string
          nullable: true
          description: >-
            Gefundener Barcode. Bei Barcode-Abfragen gefüllt, bei
            Idealo-`search-by-term` `null`.
          example: '4013474101469'
        brand:
          type: string
          nullable: true
          example: Example Brand
        description:
          type: string
          nullable: true
        image_urls:
          type: array
          items:
            type: string
          example:
            - https://.../image.jpg
        review_rating:
          type: number
          nullable: true
          description: Durchschnittliche Produktbewertung.
          example: 4.6
        review_count:
          type: integer
          nullable: true
          example: 312
        categories:
          type: array
          nullable: true
          items:
            type: string
          example:
            - Example Category
        category_ids:
          type: array
          nullable: true
          items:
            type: string
        available_since:
          type: string
          nullable: true
        last_updated:
          type: string
          nullable: true
        price_avg:
          type: number
          nullable: true
          description: >-
            Durchschnittlicher Preis über alle Angebote. Bei den meisten Quellen
            ist dies der Artikelpreis. Bei Google Shopping ist es der
            Gesamtpreis (Artikel + Versand).
          example: 142.5
        price_max:
          type: number
          nullable: true
          example: 159
        price_min:
          type: number
          description: >-
            Niedrigster Preis über alle Angebote. Bei den meisten Quellen ist
            dies der Artikelpreis. Bei Google Shopping ist es der Gesamtpreis
            (Artikel + Versand).
          example: 129
        offers_count:
          type: integer
          description: >-
            Anzahl der Händlerangebote. Bei Idealo-`search-by-term` ist dies die
            beworbene Angebotsanzahl des Listings, auch wenn `offers` leer ist.
          example: 8
        offers:
          type: array
          description: >-
            Angebote je Händler. Bei Idealo-`search-by-term`-Ergebnissen leer.
            Rufen Sie ein Listing über `search-by-id` ab, um die Angebote zu
            füllen.
          items:
            $ref: '#/components/schemas/Offer'
        source:
          type: string
          example: klarna
        country:
          type: string
          example: de
        fetched_at:
          type: string
          format: date-time
          example: '2026-06-04T12:00:03.000Z'
    Offer:
      type: object
      description: >-
        Einheitliches Händlerangebot. Die Struktur ist über alle Quellen gleich.
        Felder, die eine Quelle nicht liefert, werden als `null` zurückgegeben.
      required:
        - sellerId
        - shop_name
        - position
        - currency
        - price
        - shipping
        - total
        - voucher
      properties:
        sellerId:
          type: string
          example: m-12345
        shop_name:
          type: string
          example: Example Store
        shop_url:
          type: string
          nullable: true
          example: https://www.example-store.de
        shop_type:
          type: string
          nullable: true
          description: >-
            Gibt an, ob das Angebot von einem eigenständigen Shop oder einem
            Marktplatzhändler stammt, sofern die Quelle dies unterscheidet.
            Sonst `null`.
          example: standalone-shop
        marketplace_name:
          type: string
          nullable: true
          description: >-
            Marktplatz, auf dem der Händler verkauft, sofern vorhanden. Sonst
            `null`.
        shop_review_rating:
          type: number
          nullable: true
          description: Shop-Bewertung (typischerweise 0-5), sofern die Quelle sie liefert.
          example: 4.6
        shop_review_count:
          type: integer
          nullable: true
          example: 1240
        position:
          type: string
          description: Rang des Angebots im Ergebnis (0-basiert).
          example: '0'
        condition:
          type: string
          nullable: true
          example: new
        currency:
          type: string
          description: ISO-Währung des gewählten Markts.
          example: EUR
        price:
          type: number
          example: 129
        shipping:
          type: number
          example: 4.99
        total:
          type: number
          description: Artikelpreis plus Versand.
          example: 133.99
        free_return:
          type: boolean
          nullable: true
        voucher:
          type: boolean
          example: false
        availability_code:
          type: string
          nullable: true
          description: >-
            Grobe Liefergeschwindigkeitsgruppe aus dem Listing, sofern vorhanden
            (derzeit Idealo).
          enum:
            - short
            - medium
            - long
            - out
          example: short
        availability_text:
          type: string
          nullable: true
          example: In Stock
        direct_sale:
          type: boolean
          nullable: true
  securitySchemes:
    rapidApiKey:
      type: apiKey
      in: header
      name: x-rapidapi-key
      description: Ihr RapidAPI-Schlüssel.

````