/picnic-api

Unofficial and unaffiliated Node.js npm package as a wrapper for the API of the online supermarket Picnic.

Primary LanguageTypeScriptMIT LicenseMIT

Picnic-API

npm version GitHub license Buy me an Affligem blond MAAR3267

Unofficial and unaffiliated Node.js npm package as a wrapper for the API of the online supermarket Picnic.

Getting started

Using npm:

npm install picnic-api

Then import the package into your project. PicnicClient is the default export.

import PicnicClient from "picnic-api";

// or

const PicnicClient = require("picnic-api");

Now initialize the Picnic client with an optional options object.

const picnicClient = new PicnicClient();

// or

const picnicClient = new PicnicClient({
    countryCode: "NL", // The country code for the requests. Can be NL or DE. Untested for other countries.
    apiVersion: "15", // default 15 as this is what the app currently uses. The api version for the requests. The effect of this version numbering is unknown to me.
    authKey: "long string here", // default null. The code for the x-picnic-auth header to make authenticated requests. If not supplied then login() needs to be called before making any other requests.
    url: "url here" // default https://storefront-prod.nl.picnicinternational.com/api/15. The url to send requests to.
});

If no authKey was given in the options use the login method. Empty response if successful, otherwise an error.

await picnicClient.login("email", "password");
// and then send an authenticated request...

Example of a GET request:

const searchResults = await picnicClient.search("Affligem blond");

Example of a POST request:

await picnicClient.addProductToShoppingCart(11295810, 2);

Examples of a custom (unimplemented) request:

picnicClient.sendRequest("GET", "/unknown/route");
picnicClient.sendRequest("POST", "/invite/friend", { email: "email@email.email" });

Contributing

If you want to contribute to this project then please read the CONTRIBUTING.md file, and if you like this library then please consider using my discount code MAAR3267 so that we both get a 10 euro discount on our orders. 😄