Tutorial: Produktimport über die Amazon-API mit PHP



Das Partnerprogramm von Amazon ist sehr beliebt. Mit wenig Aufwand lassen sich alle Produkte als Partnerlink auf der eigenen Webseite einbinden. Der Wartungsaufwand steigt allerdings proportional mit der Menge der verlinkten Artikel. Eine Vereinfachung bietet die Amazon API – auch wenn es erstmal kompliziert erscheint.

Die Amazon API bietet viele Möglichkeiten. Von der Anzeige kompletter Suchergebnisse zu einem Keyword auf der eigenen Webseite, bis hin zu funktionierenden Warenkörben. Die API erlaubt den Zugriff auf (fast) alle Angaben, die Amazon zu einem Artikel anbietet.

Amazon API Zugriff

Ehe die Amazon-API verwendet wird, sollte aber ein klares Ziel vor Augen sein, was man eigentlich machen möchte. Das Ziel dieses kleinen Projektes ist es, eine bestimmte Menge ausgewählter Produkte für die eigene Webseite zu verwalten und anzubieten. Mit einer Sortierfunktion sollen diese Artikel nach bestimmten Kriterien sortiert werden können. Um das für den laufenden Betrieb der Webseite zu automatisieren geht es allerdings nicht ohne etwas Vorarbeit.
Amazon beschränkt die Anzahl der Zugriffe auf die API. Je mehr Besucher also auf der Webseite unterwegs sind, desto mehr Zugriffe müssen natürlich auf die API erfolgen.

PHP 7 und MySQL: Von den Grundlagen bis zur professionellen Programmierung*

PHP 7 und MySQL: Von den Grundlagen bis zur professionellen Programmierung

 Preis: € 49,90



(Kundenbewertungen)

Jetzt auf Amazon kaufen*

Preis inkl. MwSt., zzgl. Versandkosten

Zuletzt aktualisiert am 12. September 2022 um 01:02 . Wir weisen darauf hin, dass sich hier angezeigte Preise inzwischen geändert haben können. Alle Angaben ohne Gewähr.

Für gut besuchte Webseiten ist es macht es also Sinn, die Daten aus der Amazon API auszulesen und selbst vorzuhalten. Die zwischengespeicherten Daten dürfen aber maximal 24 Stunden lang vorgehalten werden.
Das ist natürlich auch deshalb sinnvoll, damit auf der eigenen Seite keine veralteten Preise angezeigt werden.

Ziel ist also nicht nur ein kleines Produktsortiment für die Nischenseite, sondern die Daten davon auch per Cronjob in einem gewissen Zeitintervall aktualisieren zu lassen. So, genug der Laberei – dann mal los!

Was ist eigentlich eine API?

Die Abkürzung API steht für Application Programming Interface. Frei Schnauze übersetzt beschreibt es also eine Schnittstelle zur Anwendungsprogrammierung um die Daten aus fremden Quellen für eigene Anwendungen zu nutzen. APIs gibt es von vielen großen Anbietern wie eBay, Google, Twitter, YouTube, PayPal…

Um Daten von einer API geliefert zu bekommen, müssen diese logischerweise erstmal angefragt werden. Das funktioniert mit verschiedenen Techniken, meist wird die Antwort im XML-Format zurückgeliefert.
Damit das Rad nicht ständig neu erfunden werden muss, stellen die Anbieter der API schon vorgefertigte Bibliotheken bereit, um die ersten Schritte und damit auch die Zugriffe zu erleichtern. Diese Hilfsmittel stellt natürlich auch Amazon zur Verfügung, derer wir uns natürlich bedienen.

Nun liefert die API aber nicht Hinz und Kunz einfach mal ein paar Daten aus. Um die API nutzen zu können, muss man, logisch, für das Amazon Partnerprogramm registriert sein. Doch auch das alleine genügt noch nicht. Damit überhaupt Daten geliefert werden können, vergibt Amazon an jeden Nutzer zwei Schlüssel. Ein Schlüssel ist öffentlich, einer privat. Der private Schlüssel sollte also nicht irgendwo rausgegeben werden. Der öffentliche Schlüssel hat aber auch in keiner Öffentlichkeit etwas zu suchen.

Amazon API MenuFür die API ist im Bereich „Werbekostenerstattung“ im linken Menü ein Punkt „Amazon Product Advertising API“. Unter diesem Menüpunkt befindet sich die Anmeldung für die API, dort lassen sich auch unter Dokumentation -> Account die beiden Schlüssel für die Abfragen erstellen.

Unübersichtlich und verwirrend

Als Einsteiger im Thema bietet sich natürlich die Dokumentation von Amazon an. Diese ist aber ziemlich verwirrend strukturiert und dazu nur in Englisch verfügbar. Auf der Suche nach einer leichten und einfachen Lösung um die Amazon-API ohne jeden Tinneff einzubinden, landet man irgendwann auf dieser Webseite. In unserem Fall benötigen wir den Download der PHP Function 2.0. Die im Archiv enthaltene Datei aws_signed_request.php muss dann in das Projektverzeichnis entpackt werden.
Diese Datei wird in unser gleich folgendes PHP-Skript eingebunden. Dieses Skript findet sich als Quellcode etwas weiter unten auf der eben verlinkten Seite.
Am Ende der Seite finden sich einige Kommentare, die bei möglicherweise auftretenden Problemen helfen können.

Werkzeuge: ASIN, Excel, PHP und MySQL

Alle wichtigen Infos zum Artikel holen wir uns also durch direkte Anfragen von der Amazon API. Um aber diese Informationen finden zu können, benötigt man die ASIN des Artikels. Die ASIN ist ein Code, den Amazon für jeden im Sortiment erhältlichen Artikel vergibt. Ähnlich wie eine ISBN oder EAN-Nummer.

Amazon Asin Excel

ASIN in Excel

Bei unseren ausgewählten Produkten handelt es sich auch sprichwörtliche um solche. Wir stöbern also durch das Angebot von Amazon und speichern die ASIN von den benötigten Artikeln in einer Excel-Tabelle. Bei der Gelegenheit können auch weitere Attribute des Artikels (Farben/Formen/Größen) in weitere Spalten der Tabelle eintragen werden. Das kann durchaus sinnvoll sein, denn nicht bei allen Artikeln liefert die Amazon immer alle Daten mit. Das ist aber nur wichtig, wenn man selber eine Möglichkeit benötigt die Artikel zu sortieren.
Angaben zu Artikelname, Bilder, Link zum Artikel und den Preis liefert uns später die API.

Zunächst muss aber in der eigenen MySQL-Datenbank eine neue Tabelle erstellt werden, in der die gleichen Spalten wie in der Excel-Liste vorhanden sind. Diese Tabelle muss natürlich zusätzlich zu den Angaben aus unserer Excel-Datei auch noch Spalten für die Daten haben, die von Amazon geliefert werden.

Es muss also beachtet werden, dass die Tabelle in der Datenbank im Aufbau identisch mit der Excel-Tabelle ist.

Ist das getan, muss die Excel-Liste mit den Artikeln als CSV exportiert werden (Datei -> Speichern unter -> Als CSV Trennzeichen getrennt). Diese Datei kann nun ganz einfach über Importfunktion von phpMyAdmin in die soeben erstellte Datenbanktabelle importiert werden.

Amazon Datenbanktabelle

Datenbanktabelle

 

Die richtige Antwort fordern: Amazon Response Groups

Leider kann man nicht einfach die ASIN an Amazon senden und hoffen alle relevanten Infos zum Artikel zu erhalten. Amazon hat ein extrem umfangreiches Sortiment und nicht alle Angaben sind für alle Produkte nötig. CDs haben andere Angaben als Bohrmaschinen, Computerspiele wieder andere als Stehlampen.

Amazon Response Groups

Viel Auswahl bei den Response Groups

Um den Datenverkehr in Grenzen zu halten, lassen sich spezielle „Response Groups“ abfragen, die mehr oder weniger unterschiedliche Ergebnisse liefern.

Bei den verschiedenen Response Groups gibt es auch noch Untergruppen. Diese Untergruppen sind fest in der jeweiligen Response Group verankert und werden immer automatisch mitgeliefert. Dazu gehören zum Beispiel die Artikelbilder. Man muss also für die Artikelbilder keine weiteren Request an die API senden.

Dieser Code speichert die drei Angaben für Amazon in Konstanten. Dort müssen natürlich die von Amazon erhaltenen Schlüssel und die Tracking-ID eingetragen werden.
Danach wird die aws_signed_request.php inkludiert, die mit diesen Angaben gleich den Aufruf bei der Amazon-API vollbringt.
Aus unserer Datenbanktabelle Artikel lesen wir mit „SELECT * from Artikel“ alle Zeilen aus, die durch die darauf folgende While-Schleife nun Zeile für Zeile abgearbeitet wird.

Als Response-Group ist hier „Large“ gewählt. Das muss aber nicht die beste Einstellung sein. Danach wird ausgewertet, ob die Abfrage erfolgreich war. War sie es, werden alle empfangenen Daten in dem Array $pxml gespeichert, dem Sie im nächsten Schritt wieder entnommen werden können. Dies geschieht hier beispielhaft mit der Variable $titel.

Den Strukturbaum durchblicken

War die Anfrage an die Amazon-API von Erfolg gekrönt, befindet sich die Antwort im Array $pxml. Um diese nun aus dem Array heraus nutzen zu können, muss man sich die Position erstmal heraus suchen. Da die Antwort im Prinzip aus einer XML-Datei besteht, kann man sich natürlich da durch wühlen.

Alternativ lassen sich die Positionen aber auch in der Amazon-Dokumentation rausfinden. Dazu muss in der Liste der möglichen Response Groups die verwendete (hier Large) ausgewählt und dann das betreffende Element angeklickt werden. Am unteren Rand der Seite befindet sich ein XML-Beispielcode, der den Aufbau und damit quasi die Pfade zum auserwählten Element darstellt.

Das obige Beispiel wird ab $titel mit folgenden Anweisungen ergänzt:

Damit sind alle benötigten Artikel in entsprechenden Variablen abgelegt. Das ist ein kleiner Umweg, dient aber der Übersicht.

Ab in die Datenbank

Ist die Datenbanktabelle einsatzbereit, müssen die noch leeren Felder jetzt mit den Daten aus der Amazon API gefüllt werden.
Die while-Schleife sorgt dafür, dass auch wirklich jede ASIN aus der Datenbank an Amazon gesendet wird und die passenden Daten geliefert werden.

Dummerweise läuft die Schleife bisher jetzt nur durch, speichert aber die gelieferten Daten noch nicht in der Datenbank ab. Um das zu bewerkstelligen, wird der Update-Befehl von MySQL verwendet, denn der Datensatz besteht ja schon und soll nicht erneut angelegt werden.

Vor der schließenden, geschweiften Klammer der while-Schleife wird nun das Update des Datensatzes in der Datenbanktabelle durchgeführt.

Mit den so erstellten Daten lassen sich die Produkte von Amazon in neuem Gewand auf der eigenen Webseite darstellen.

Aktualisieren per Cronjob

Webhosting-Anbieter wie All-Inkl bieten in Ihren Paketen die Option an, Cronjobs einzurichten. Ein Cronjob ist eine Aktion, die in regelmäßigen oder zu bestimmten Zeitabständen durchgeführt werden soll. Ideal also, um unsere Produktdaten von Amazon aktuell zu halten. Normalerweile genügt eine tägliche Aktualisierung dafür.

Das Problem mit der Produktbeschreibung

Auch wenn allerhand Daten aus der Amazon-API gezogen werden können, scheint es leider keine Möglichkeit zu geben auch die Produktbeschreibung auszulesen. Lediglich bei Büchern ist es möglich, den Klappentext zu bekommen.
Wer hier eine Lösung parat hat, wie die Beschreibung doch ausgelesen werden kann – ich freue mich über eine Rückmeldung.

 

Merken

Merken



98 Kommentare:

  1. Pingback:Amazon API für Nischenseiten anzapfen | SE...

  2. Pingback:Nischenseiten-Challenge Woche #03 - Alles im Plan

  3. Pingback:Nischenseiten-Challenge Woche #01 - es geht voran

  4. Danke für das Tutorial, hat mir am Anfang sehr geholfen :)

    War jedoch dann verunsichert, wie hoch die Kosten seitens Amazon für diesen Service sind? Aber offenbar ist die API wirklich kostenlos ( siehe https://aawp.de/blog/kosten-fuer-die-nutzung-der-amazon-product-advertising-api/ ), was sehr geil ist!

  5. Hallo Steffen,

    auch ich sage zuerst danke für dieses sehr gute Tutorial. Ich bin zwar erst nach dem Download der aws_signed_request.php auf diesen Beitrag gestoßen, aber er hat mir wertvolle Tipps und Anregungen für meine Umsetzung in einem WordPressblog gegeben.

    Ich arbeite schon länger mit diversen Tools unter WordPress. Beim Vergleich deiner Lösung mit bestehenden Links auf meinem Blog zu Amazon-Produkten habe ich festgestellt, das die Features gleich der Beschreibung sind. Um wirklich alle Features in die Beschreibung zu bekommen, arbeite ich basierend auf deiner Lösung mit folgender Schleife:
    for($i=0; $i Items->Item->ItemAttributes->Feature->Count(); $i++)
    {
    echo „“.$pxml->Items->Item->ItemAttributes->Feature[$i].““;
    }
    Ich zähle also zuerst die gesammten Features und gebe sie dann der Reihe nach aus. Ich hoffe ich konnte weiterhelfen.

    Beste Grüße aus Plankschd

    Michael

  6. Hi

    Wie schaut es mit den Preisen aus, wenn die sich innerhalb der gespeicherten 24h ändern? Darf man dann sozusagen falsche Preise anzeigen?

    LG

    • Ich nehme deinen merkwürdigen Namen ausnahmsweise mal hin. Beim nächsten Mal greifen die Kommentarrichtlininen.
      Wenn 24 Stunden nicht reichen, kann man auch den CronJob auf ein anderes Zeitintervall stellen.

  7. Moin Moin !
    Interessanter Beitrag ! und danke dafür !
    Ich habe vor ca. einem halben Jahr schon einmal versucht Amazon Artikel passend zu meinen Beiträgen in meine Seite zu Fummeln !
    Aber leider hatte ich mehr Probleme als alles andere….
    Die Verunsicherung von Andreas verstehe ich voll und ganz …. kann mich noch daran erinnern das ich vor einem halben Jahr auch Angst hatte…..
    Denn bei der Anmeldung wir nach einer Kreditkarte gefragt …..

    Damals hatte ich alles 2 Wochen getestet aber dann meine Api wieder abgemeldet….
    Jetzt bin ich doch wieder am Überlegen ob ich es nicht doch noch hin bekomme …..

    Jetzt möchte ich wieder Zugriff auf die Api haben und schon wieder werde ich nach eine Kreditkarte gefragt und darüber steht:

    „Bitte geben Sie Ihre Zahlungsinformationen unten ein. Sie haben die Möglichkeit, eine große Auswahl von AWS-Produkten innerhalb des kostenlosen Nutzungskontingentes zu testen. Ihre Kreditkarte wird nur für die Nutzung belastet, die nicht durch das kostenlose Nutzungskontingent abgedeckt ist.“

    Aber was das genau heißt steht nirgends ! Kannst Du uns bzw. mir da weitere Informationen geben?

    Danke im voraus

    Mike

    • Ich habe meinen Account seit ca. 2006 und damals brauchte ich keine KK – da hatte ich auch gar keine.
      Das ist wahrscheinlich nur nötig, weil man Zugriff auf alle Amazon Web Services hat. Und manche davon sind eben auch kostenpflichtig.

  8. Hi !
    Danke für die schnelle Antwort…..
    Habe jetzt einfach einen neuen account gemacht….
    Jetzt ging alles relativ einfach….
    Aber eine Frage noch Bitte….
    hier oben steht :
    /Amazon-Keys und Affiliate-ID
    define(‚AWS_API_KEY‘, ‚DEIN_API_KEY‘);
    define(‚AWS_API_SECRET_KEY‘, ‚DEIN_SECRET_API_KEY‘);
    define(‚AWS_ASSOCIATE_TAG‘, ‚deine-amazon-id-21‘);

    Wo finde ich den Api_key und den api_secret_key ?

    Ich habe auf der Amazon Seite file keys gefunden … unter anderem habe ich 2 .pem files runter geladen ….
    Der Inhalt fängt so an :
    —–BEGIN PRIVATE KEY—–
    MIIEvgIBADANBgkqhkiG9w0BAQ…
    …….—–END PRIVATE KEY—–
    (viele hundert zeichen)
    und folgende :
    —–BEGIN CERTIFICATE—–
    MIIDhzCCAm+gAwIBA…………..
    ……….
    J8JYA==
    —–END CERTIFICATE—–

    Sind das die von mir gesuchten keys ?
    Kann es sein das die wirklich soooo lang sind ?

    Dank im voraus
    mike

  9. sorry ! frage hat sich erledigt und kann gelöscht werden ! trotzdem Danke !

  10. Aber eine Frage hätte ich da doch noch …..
    Aktuell läuft alles wunderbar…. Aber wie hast du es geschafft alles in WordPress zu integrieren?
    Z.B. auf dieser Seite hier: https://www.kritzelblog.de/amazon-fire-tv-kommt-nach-deutschland/
    (Das dritte Bild mit dem Link zu Amazon funktioniert leider nicht! 1. Das Bild ist nicht vorhanden und 2. man kommt nur auf eine leere Seite!)
    Hast du die Bilder in diesem Post über die API erstellt?
    Nutzt du selber ein Plugin oder machst du das alles nur über die API selber?
    Danke im voraus
    Mike

  11. Gina Neumüller

    Hallo,
    das muss ja wirklich eine tolle Sache sein, aber leider kann ich das selbst nicht umsetzen, da ich überhaupt keine Ahnung von solchen Sachen habe

  12. Hallo, schöner Beitrag. Gibt es einen bestimmten Grund die Daten in die eigene Datenbank zu schreiben? Ist die Limitierung der Amazon-Aufrufe der einzige Punkt der hierfür spricht? Viele Grüße

  13. Pingback:Montag, 18. April 2016 – Amazon Store | schaemicon

  14. Hi,

    bekommt man eigentlich auch Bilder über die API?

    Danke und VG

  15. Hey Steffen,

    vielen Dank für den hilfreichen Artikel.

    Gibt es eine Möglichkeit die Gesamtzahl der Bewertungen auszugeben inklusive Sterne oder hat das Amazon geblockt ? :-(

    Gruß
    Christian

    • Das soll zwar gehen, ist meines Wissens aber nicht gewollt von Amazon.

    • Hallo Christian,

      die Bewertungen herauslesen ist nicht gewollt, jedoch kann diese aus dem HTML-Iframe herauslesen. Hier verwendet Amazon einfach ein Bild mit dem entsprechenden Namen. Auf diese Bild musst du zugreifen können. Hierzu brauchst Du nur einfach das Iframe parsen. Das kann man in 10 Min programmieren und ist kein Hexenwerk.

      LG Stefan

  16. Hallo
    Mit {$EditorialReview->Content} und Amazonsimpleadmin,
    gibts die Artikelbeschreibung.

  17. Leider finde ich den API code nicht, würde mich über Tips freuen

  18. Hallo Steffen,

    vielen Dank! Ich hab das Thema vor 2 Jahren mal probiert und bin komplett gescheitert, da ich auch bei Null anfing bei der API. Dank deiner Anleitung (andere hatten nicht geklappt), hat es nach einer kleinen Modifikation bei nun tatsächlich geklappt.
    Inzwischen hat sich aber etwas geändert. Der Preis lautet nun:
    Alt:
    $preis = $pxml->Items->Item->OfferSummary->LowestNewPrice->FormattedPrice;

    Neu:
    $preis = $pxml->Items->Item->Offers->Offer->OfferListing->Price->FormattedPrice;

    Bei mir klappte das einspielen vom Preis in die DB aber nicht. Möglich wegen dem „Euro“ und KOMMA bzw SEMIKOLON Unterschied. Aber das sind Kleinigkeiten die ich noch angehen werde.
    Zumindest klappt die Verbindung und die Daten werden gezogen.

    Ich hab dann auch vor 1x am Tag einen Abgleich meiner Daten mit der von Amazon zu machen.
    Danke :)

    • Freut mich! Ich habe mindestens eine Seite die noch auf diesem Skript hier basiert – der Preis wird aber korrekt dargestellt.
      Ich müsste mal updaten, aber momentan ist nicht viel Luft dafür. Freut mich auf jeden Fall enorm, wenn jemand selbst Hand anlegt und nicht die üblichen Plugins und Themes nimmt, um am Ende auch nur Einheitsbrei zu bekommen.

      • Ich nutz es ja nicht für WP, sondern selbst programmierte Webseite.
        Ich hab aber nun nen Problem festgestellt. Ich durchlaufe in einer Schleife (rund 100x) die Anfrage und schreibe das in die DB. Jedoch nach rund 10 Stück kommt „Request failed“. Bei den 100 Anfragen sind ca. 1/3 immer mit Fehlern. Aber immer andere. Sind es zu viele in zu kurzer Zeit? Wüsste aber nicht wie ich das anders abfragen kann.

        • Setz mal ein Sleep in die Schleife. Damit erzwingst Du eine Pause. Hat bei mir geholfen, weil manche Datensätze manchmal unvollständig waren.
          https://php.net/manual/de/function.sleep.php

          Bei vielen Anfragen darf die Pause natürlich nicht zu lang sein, weil sonst möglicherweise die Skriptlaufzeit des Servers erreicht wird. Vielleicht nicht gerade die professionellste Lösung, hat bei mir auf die Schnelle aber geholfen.

  19. Hallo, guter Artikel und hat mich sehr viel weiter gebracht. Nun habe ich eine Seite erstellt und auch begonnen ASIN’s in meine MySQL db einzutragen und musste dann beim aktualisieren der Preise/Artikelbilder/Titel… feststellen, dass halt eben nicht für jeden Artikel über die response group ‚large‘ der Preis geliefert wird. Jedoch wie finde ich jetzt raus, wie ich an den Preis des bestimmten Artikel komm, also welche response group die richtige ist?

    • Ich hatte eher mal Probleme mit den Bildern, mit dem Preis noch nie.
      Eventuell hilft der vorige Tipp mit der kurzen Pause weiter.

      • Habe eine sleep() -Fkt in meine Schleife eingebaut
        Beispielsweise ist es diese ASIN B00BHXJDAM
        Woran liegt das, dass ich dazu keine Details über die Api abfragen kann außer Titel, aber halt keinen Preis? Meine nächste Frage ist, ich habe mich danach schon „dumm“ gesucht, wie ich die Käuferbewertungen, also was bei Amazon anhand der 5 möglichen Sterne ausgegeben wird, heranbekomme?
        Vielen Dank schon einmal!! Hoffe, dass mir jemand weiterhelfen kann…

  20. Hallo Steffen,

    tolle Erklärung der API. Ich habe ein Problem, für das Du eventuell eine Lösung hast.

    Kategorie Bücher.

    Ich benötige die Unterkategorie. zb. Bücher/Thriller. Ich möchte die Artikel gern sortieren im eigenen Shop und benötige also nicht nur die Ober-Kategorie Bücher, sondern auch die entsprechende Unterkategorie, wie Krimi, Fachbuch, Kinderbuch usw.

    Beispiel: Bücher > Fachbücher > Pädagogik > Unterrichtsvorbereitung > Allgemein

    Gibt es eine Möglichkeit das auszulesen?

    1000 Dank im Voraus,
    Sandra

  21. Hallo Steffen,

    vielen Dank für deine Anleitung.

    Kannst du mir noch sagen, wie ich die Artikelbeschreibung von Amazon auslesen kann? EditorialReview schaffe ich nicht im Script einzubinden.

    Danke.

  22. Hi Steffen,

    viele Dank für Deinen echt tollen Beitrag! Sehr verständlich und für Anfänger super geeignet die nicht direkt Geld in teure Themes stecken wollen.

    Kleine Bemerkung am Rande, der Link zur aws_signed_request.php ist down wenn ich das richtig sehe und wenn du mal Zeit hast kannst du den Artikel vielleicht noch um die Einbindung in WordPress erweitern ;) Ansonsten weiter so super Arbeit!

    LG Thomas

    • Vielen Dank, ich habe den Link bearbeitet. Da ist mir bei der Umstellung auf SSL auch hier ein https mit reingerutscht und dann weigern sich die Browser diesen auch aufzurufen.

  23. Hallo Steffen,

    das Tutorial ist sehr toll geworden. Ich habe mir damals eine Webseite mit CI erstellt und die ASIN darin verwaltet. Man kann in einem API- Abruf jeweils bis zu 10 Produkte sich von Amazon schicken lassen. In einem Monat kann man wohl nur eine bestimmte Anzahl von Produktdaten sich herunter laden. Dies versuche ich damit zu umgehen. Auch Updates für Preis und Bewetetungen können so 10 man so schnell gemacht werden.

    LG Stefan

    • Danke,
      Ich bin mir jetzt nicht ganz sicher, aber die Beschränkung auf 10 Produkte/Abruf meine ich schon mal auf irgendeinem Wege umgangen zu haben.
      Das mit dem monatlichen Abruf wäre mir neu, ich habe Seiten, da aktualisiere ich stündlich die Produktpreise.

  24. Hi Steffen :)

    Erst mal danke für den ausführlichen und sauberen Beitrag!

    Ich hätte noch eine kleine Frage. Mit dem Code werden die Daten jetzt in der Datenbank gespeichert oder? Um sie dann benutzen zu können muss man die Datenbank in WordPress wieder abfragen, oder?

    Des Weiteren wollte ich fragen, ob man das als Plugin einrichten kann. Sprich das, dass Plugin alle 12 Stunden die Daten abfrägt und in die Datenbank einträgt.

    Liebe Grüße
    Micha :)

    • Hi, vielen Dank. Du musst nur den Cronjob der die Aktualisierung anstößt auf 12 Stunden einstellen.
      Wenn du das in WordPress nutzen möchtest, gibt es da (glaube ich) eine eigene Cronjob-Funktion für. Hier bin ich allerdings überfragt.

  25. Hallo Steffen,
    vielen Dank für deinen Artikel!
    Du schreibst, dass man bei Büchern an den Klappentext rankommt. Hast du das selbst ausprobiert? Mir gelingt es mit ItemLookup und der Large-ResponseGroup nämlich nicht, egal welche ISBN ich nutze. Auch mit anderen ResponseGroups war ich nicht erfolgreich.
    Welche Parameter hast du genutzt?
    Beste Grüße!
    Thomas

  26. Hallo !
    VIelen Dank für deine Bemühungen !!! Deine Beschreibung ist wirklich sehr hilfreich !

    Könntest du mir vielleicht bei einer Sache helfen?

    Ich habe alles so gemacht wie beschrieben und Amazon sagt mir das die Sigantur falsch wäre.
    Habe auf der DE seite selbstverständlich einen Access Key und Secret Key anfertigen lassen.
    VIelen Dank im vorraus

    Hochachtungsvoll

    Hörnig, Davin

  27. Hey Ich habe dir vor ein paar Minuten geschrieben.

    Ich möchte mich ein erneutes mal bei dir vielmals bedanken !
    Ich habe es hinbekommen <33333

    du bist der hammer !

  28. Irgendwie will es nicht zum laufen bringen
    Habe:

    DB Angelegt mit div. Spalten (asin, preis, name…)
    Productfunction 2.0 „installiert“
    PHP Script gefüllt aber es kommt nur

    Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /www/htdocs/xxxxxxxx/command.php on line 12

    Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in /www/htdocs/xxxxxxxx/command.php on line 14

    Kennt ihr Freelancer oder co., welche die inst. übernehmen – wir nurzen leider kein CMS so dass es kein Plugins für das Thema gibt

    • Moinsen,
      stimmen die Zugangsdaten zur Datenbank? Eigentlich zeigen die Fehlermeldungen anhand der Zeilennummern ziemlich genau, wo der Hund begraben liegt.

    • Das gleiche Problem habe ich leider auch. Bei WordPress kann man scheinbar nicht mit der $db arbeiten. Dort muss es die $wpdb sein. Die bekomme ich aber nicht initialisiert und ebenfalls immer den Fehler Warning: mysqli_query()

      Leider konnte ich den Fehler noch nicht finden und weiß einfach nicht, wie ich die $wpdb zum Laufen bekomme. Mit dieser globalen Variablen kann man wohl mit der WordPress Datenbank kommunizieren.

      Ich hoffe ich finde die Lösung noch irgendwo… Ansonsten bis hierhin gutes Tutorial.

  29. Danke für die schnelle Antwort die config.php zeigt beim aufruf keine fehler

  30. Beispiel
    $db_server = „localhost“; // Hostname
    $db_user = „XXXX“; // Benutzername
    $db_pass = „XXXX“; // Kennwort
    $db_name = „XXXX“; // Name der Datenbank
    $link = mysql_connect($db_server, $db_user, $db_pass) or exit („Es konnte keine Verbindung zum Datenbankserver hergestellt werden.“); // Verbindung zum Datenbankserver
    mysql_select_db($db_name, $link) or exit („Diese Datenbank \“$db_name\“ existiert nicht.“);

  31. Hallo,

    sehe ich aktuell nicht – lasse aber nochmal zwei weitere Augen prüfen.-

    Sind ggf. die $ falsch im PHP Skript schreiben Sie:

    $result = mysqli_query($db,$sql)

    die finde ich nicht in der confic.php

    alternativ vermute ggf. ein falsch tag am ende der php datei – meine endet mit:
    #datei mit phpscript

    $titel = $pxml->Items->Item->ItemAttributes->Title;
    }
    }
    };
    ?>

    #Leerzeilen rausgenommen

  32. mysqli >> könnte der fehler in der den inhalten der db liegen ?

  33. Danke für die Hilfe – hat alles super geklappt und auch die Hürden eines Wikis (Autoformatierung) sind gelöst.

    Aktuell eines der letzten Hürden: In der DB sind Umlaute zerschossen – vermutlich da nicht UTF-8

    löst ihr das beim Import oder beim Export`?

  34. Pingback:Drei Möglichkeiten Produktbilder DSGVO-konform einzubinden

  35. Hey Steffen,

    wenn wir unsere Seite soweit ans laufen kriegen, würden wir dir gerne als dankeschön etwas Geld schicken. Dauert paar Monate noch aber dann würden wir uns bei dir nochmal melden.

    Ohne dich hätten wir das niemals im Leben hinbekommen.

  36. Hallo. Danke für die Anleitung und die vielen Tipps.
    Ich habe das Problem das Amazon meine Abfragen drosselt. Wenn ich 20 Artikel hintereinander abfrage macht die Schnittstelle irgendwann dicht und ich muss warten. Kann man das umgehen, bzw. wie kann man das elegant lösen? Gibt es einen Unterschied zwischen API und AWS?

    • Irgendwo oben hatte ich mal den Tipp gegeben, eine Sekunde Pause zwischendrin einzufügen. Hilft bei mir auf jeden Fall, den Cronjob sauber durchlaufen zu lassen.

  37. moinsen ….
    wenn ich o.g. code verwende kommt bei preis immer nur 0.00 in meine DB
    liegt wohl daran das ich für das Feld „preis“ decimal 5,2 gewählt habe…..
    da aber in der variablen $preis folgendes ausgegeben wird: EUR 3.33 kann das natürlich
    nicht in das Feld eingetragen werden. Wie habt ihr das geregelt !?

    • hat sich erledigt …. habe es wie folgt erledigt :
      $preis = str_replace(„EUR“,““,$preis);
      $preis = str_replace(„,“,“.“,$preis);

  38. Trotzdem noch eine Frage…. Und zwar zu den Response Groups
    im o.g. Datenbank-beispiel steht in Zeile 18 „Anbieter“ das finde ich allerdings im unteren skriptbeispiel nicht!
    dort steht dann nur :
    } else {

    $titel = $pxml->Items->Item->ItemAttributes->Title;
    }
    }

    bzw. ja etwas tiefer noch weitere Beispiele …. Aber wie kann ich nun genau rausfinden unter welchen Response Groups ich noch mehr bzw. andere Daten finden kann wie z.B. EAN code oder ähnliches= gibt es eine Tabelle wo die Response Groupe steht und dahinter wie man diese ausliest ähnlich wie bei „large“ dann per $titel = $pxml->Items->Item->ItemAttributes->Title;

    Leider habe ich die Infos nicht bei der Amazon Api gefunden! ?
    Danke wie immer im voraus für jegliche Unterstützung

  39. Hallo zusammen, ich habe die API jetzt gut 3 Monate ohne Probleme genutzt, allerdings sperrt Amazon immer wieder meine Keys, weil kein Umsatz generiert wird über meine HP.

    Gibt es eine Möglichkeit, dies zu umgehen, oder dafür zu zahlen, dass die Keys einfach nur für Produktdaten genutzt wird?

    Danke im Voraus

  40. Pingback:Pixelbuben, Amazon API und Block Lab. | Pixelbart

  41. Hallo,

    erstmal vielen Dank für dein Skript. Ich probiere es gerade aus und bekomme leider „Request failed“ raus.
    Ich habe es zum testen erstmal ohne Datenbank probiert und will einfach nur den Titel von einem produkt haben zum testen.

    //Amazon-Keys und Affiliate-ID
    define(‚AWS_API_KEY‘, ‚***‘);
    define(‚AWS_API_SECRET_KEY‘, ‚***‘);
    define(‚AWS_ASSOCIATE_TAG‘, ‚***‘);

    include(‚aws_signed_request.php‘); //Datei inkludieren

    $asin = ‚B000VH3FNQ‘;

    // generate signed URL
    $request = aws_signed_request(‚de‘, array(
    ‚Operation‘ => ‚ItemLookup‘,
    ‚ItemId‘ => $asin,
    ‚ResponseGroup‘ => ‚Large‘), AWS_API_KEY, AWS_API_SECRET_KEY, AWS_ASSOCIATE_TAG);

    // do request (you could also use curl etc.)
    $response = @file_get_contents($request);

    if ($response === FALSE) {
    echo „Request failed.\n“;
    } else {
    // parse XML
    $pxml = simplexml_load_string($response);
    if ($pxml === FALSE) {
    echo „Response could not be parsed.\n“;
    } else {

    $titel = $pxml->Items->Item->ItemAttributes->Title;
    }
    }

    An Key & Secret sollte es nicht liegen. Habe ich mehrfach kontrolliert.
    Muss ich sonst was beachten?
    Evtl kannst du mir ja helfen :)

  42. Hi, auch ich erhalte „request failed“ von gleicher Stelle. Gibt es hierzu schon Lösungsansätze? Mein Zugang ist schon etwas älter. Lediglich die Keys habe ich erneuert, diese stehen jedoch auf „aktiv“.
    LG

  43. Hallo zusammen!
    Bei mir funktioniert die Amazon API seit April 2018 verdammt gut (dank diesem Forum).

    Jedoch bekomme ich von heute auf morgen ohne eine Änderung folgenden hinweiß.

    AWS Access Key ID: ********************. You are submitting requests too quickly. Please retry your requests at a slower rate.

    Die Sternchen sollen meine ID darstellen, hab ich jetzt geschwärzt.

    Was da steht ist absoluter käse, kein mensch fragt da irgend etwas an. Hab berreits den Key geändert und den support angeschrieben und die wissen auch nichts.

    Hat jemand schonmal so ein problem gehabt?

  44. Maximilian Meyer

    Guten Tag,

    sehr guter Beitrag!

    Eine Frage habe ich da aber noch. Mal angenommen, es gibt ein Produkt in 3 Größen und 3 Farben.
    Bei der Auswahl von einer anderen Größe und Farbe ändert sich der Preis.

    Gibt es eine Möglichkeit alle Preise abzufragen um am Ende ein „Mindestens – Maximal“ anzugeben?
    Also quasi wenn das günstigste 10 EUR kostet und das teuerste 100 EUR, dass z.B. „10 – 100 EUR“ angezeigt wird?

    Exakte Frage: Bietet die Amazon API eine Möglichkeit alle Preise eines Produkts in verschiedenen Formaten/Größen/Farben auszugeben?

    Würde mich über eine Antwort sehr freuen.

    Fg

  45. Pingback:Pixelbuben, Amazon API und das Plugin Block Lab. – Pixelbart

  46. Hi Steffen,
    ich nutze die aws_signed_request.php (Danke für die Empfehlung!) schon länger ohne Problem. Seit einiger Zeit erhalte ich aber von Amazon die Aufforderung, auf die Api 5.0 umzustellen (PA API 4.0 wird am 9.3.2020 deaktiviert). Weißt Du, ob es für die aws_signed_request.php ein Update auf die Api 5.0 gibt?
    Viele Grüße,
    Michael

  47. Hallo Steffen,

    Deine Anleitung hatte mir damals super geholfen. Inzwischen ist die API 5 aktiv und die alte funktioniert nicht mehr. Leider mag die API auch keine Schleifen. Hast du bereits deine Seiten damit umsetzen können und uns wieder ein paar Tipps geben?

    Danke und Viele grüße

  48. Pingback:Pixelbuben, Amazon API und das Plugin Block Lab – Pixelbart

  49. Vielleicht hilft das jemanden weiter:
    https://webservices.amazon.com/paapi5/documentation/without-sdk.html

    Etwas scrollen, da gibt es PHP Kode.

  50. Hallo,
    da das ganze jetzt mit der API 5 nicht mehr funktioniert, habe ich eine schnelle Anleitung geschrieben:
    https://1manfactory.com/salesrank-ueber-amazon-api-abfragen/

  51. Auch wenn es nicht mehr aktuell ist, habe genau die Info zur API gefunden, bei der ich ein großes Fragezeichen über den Kopf habe. Besten Dank :)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert