SheetMusicDirect.com Digital Retailer API

Catalogue services


Get Product Count | Get Products | Get Updated Product Count | Get Updated Products | Get Deleted Products

Introduction

Note: consumption of all the endpoints below requires a valid security header.

The catalogue API endpoints enable the following actions:

Getting full data for all available products is typically required when creating a new application; for example, importing our catalogue data into your system for the first time. We provide two methods for this purpose: GetProductCount and GetProducts.

Getting data for recently updated products is necessary to ensure your catalogue is up to date with new releases and updated metadata. Again, we provide two methods for this: GetUpdatedProductCount and GetUpdatedProducts. We recommend you consume these endpoints on a daily basis to ensure you have an up-to-date catalogue.

Getting data for deleted products is a process that should also be run on a daily basis to ensure you do not offer for sale any products which have been removed from our catalogue (for example, for copyright reasons).

GET http://api.sheetmusicdirect.com/products/getproductcount

Endpoint security signature: ["getproductcount"][yourkey]

This endpoint is used to get a count of all currently available products.

Example call: http://api.sheetmusicdirect.com/products/getproductcount?key=[your_key_here]

Example response:

  {"product_count":98449}

GET http://api.sheetmusicdirect.com/products/getproducts

Endpoint security signature: ["getproducts"][yourkey]

This endpoint is used to get data for all currently available products. It should be used for initial set up of / data import for your application.

The maximum number of products returned by this method is 1000. When retrieving the whole catalogue, divide the size of the catalogue by 1000 to calculate the number of endpoint requests required. For each successive request, increase the offset parameter by 1000. This will provide you with the whole catalogue.

Example call: http://api.sheetmusicdirect.com/products/getproducts?key=[your_key_here]&offset=0

Example response:

{ 
  "products":[ 
    {
      "ProductId":13618,
      "CatalogueReference":"smd_000001",
      "SongId":1,
      "SongTitle":"All Or Nothing At All",
      "ArtistName":"Frank Sinatra",
      "ArtistNameReversed": "Sinatra, Frank",
      "Arrangement":"Piano, Vocal & Guitar (Right-Hand Melody)",
      "ArrangementCode":"PVGRHM",
      "Genre":"Jazz",
      "PreviewImage":"https://img.sheetmusic.direct/assets/page-previews/web/smd_000001_altman__lawrence_all_or_nothing_at_all_web.png",
      "CoverArtUrlSmall":"https://img.sheetmusic.direct/catalogue/product/smd_000001/medium.jpg",
      "CoverArtUrlLarge":"https://img.sheetmusic.direct/catalogue/product/smd_000001/large.jpg",
      "NumberOfPages":4,
      "MinimumPurchaseQuantity":1,
      "Price":2.49,
      "Currency":"GBP",
      "ReleaseDate":"2000-09-13T00:00:00",
      "LastUpdated":"2015-09-08T00:00:00",
      "AvailableCountries":"AD, AE, AF, AG, AI, AL, AM, AN, AO, AQ, AR, AS, AT, AU, AW, AX, AZ, BA, BB, BD, BE, BF, BG, BH, BI, BJ, BM, BN, BO, BR, BS, BT, BV, BW, BY, BZ, CA, CC, CD, CF, CG, CH, CI, CK, CL, CM, CN, CO, CR, CU, CV, CX, CY, CZ, DE, DJ, DK, DM, DO, DZ, EC, EE, EG, EH, ER, ES, ET, FI, FJ, FK, FM, FO, FR, GA, GB, GD, GE, GF, GG, GH, GI, GL, GM, GN, GP, GQ, GR, GS, GT, GU, GW, GY, HK, HM, HN, HR, HT, HU, ID, IE, IL, IN, IO, IQ, IR, IS, IT, JE, JM, JO, JP, KE, KG, KH, KI, KM, KN, KP, KR, KW, KY, KZ, LA, LB, LC, LI, LK, LR, LS, LT, LU, LV, LY, MA, MC, MD, ME, MG, MH, MK, ML, MM, MN, MO, MP, MQ, MR, MS, MT, MU, MV, MW, MX, MY, MZ, NA, NC, NE, NF, NG, NI, NL, NO, NP, NR, NU, NZ, OM, PA, PE, PF, PG, PH, PK, PL, PM, PN, PR, PS, PT, PW, PY, QA, RE, RO, RS, RU, RW, SA, SB, SC, SD, SE, SG, SH, SI, SJ, SK, SL, SM, SN, SO, SR, ST, SV, SY, SZ, TC, TD, TF, TG, TH, TJ, TK, TL, TM, TN, TO, TR, TT, TV, TW, TZ, UA, UG, UM, US, UY, UZ, VA, VC, VE, VG, VI, VN, VU, WF, WS, YE, YT, ZA, ZM, ZW",
      "Contributors":[
          {
              "Name": "Frank Sinatra",
              "ContributionType": "Artist",
              "NameReversed": "Sinatra, Frank"
          },
          {
              "Name": "Arthur Altman",
              "ContributionType": "Composer",
              "NameReversed": "Altman, Arthur"
          },
          {
              "Name": "Jack Lawrence",
              "ContributionType": "Composer",
              "NameReversed": "Lawrence, Jack"
          }
      ]
    }
    //followed by more products here
  ]
}

It is possible to request this data in a number of supported languages and currencies. Use "lang" and "curr" querystring parameters to request this data.

Important: although we provide prices in non-GBP currencies, you will be billed according to the GBP base price.

Supported languages:

LanguageLanguage Code
English (default)en
Frenchfr
Germande
Spanishes

Supported currencies:

CurrencyCurrency Code
Pounds Sterling (default)GBP
US DollarsUSD
EuroEUR
Australian DollarsAUD
Japanese YenJPY

GET http://api.sheetmusicdirect.com/products/getupdatedproductcount

Endpoint security signature: ["getupdatedproductcount"][yourkey]

This endpoint is used to get a count of all currently available products. It takes an updatedsince parameter to limit the scope of the query to records which have been updated since a given date. The updatedsince parameter should be formatted YYYY-MM-DD, i.e. year-month-day.

Example call: http://api.sheetmusicdirect.com/products/getupdatedproductcount?key=[your_key_here]&updatedsince=2015-09-01

Example response:

  {"product_count":239}

GET http://api.sheetmusicdirect.com/products/getupdatedproducts

Endpoint security signature: ["getupdatedproducts"][yourkey]

This will return all new and updated products added after midnight (GMT) of the requested date. Please note, products added today will be made available at midnight the following day. The updatedsince parameter should be formatted YYYY-MM-DD, i.e. year-month-day.

You may also request updates for individual products by specifying the product id(s). In this case, you should leave the updatedsince parameter empty.

This endpoint returns a maximum of 1000 records.

If a request to getupdatedproductcount shows more than 1000 records have been updated, use the offset parameter to request further batches of updates, e.g. "&offset=1000", "&offset=2000", etc. Always use offset in increments of 1000.

Example call: http://api.sheetmusicdirect.com/products/getupdatedproducts?key=[your_key_here]&updatedsince=2015-09-01

Example response:

{ 
  "products":[ 
    {
      "ProductId":13618,
      "CatalogueReference":"smd_000001",
      "SongId":1,
      "SongTitle":"All Or Nothing At All",
      "ArtistName":"Frank Sinatra",
      "ArtistNameReversed": "Sinatra, Frank",
      "Arrangement":"Piano, Vocal & Guitar (Right-Hand Melody)",
      "ArrangementCode":"PVGRHM",
      "Genre":"Jazz",
      "PreviewImage":"https://s3.amazonaws.com/media.sheetmusicdirect.com/images/web/smd_000001_altman__lawrence_all_or_nothing_at_all_web.png",
	  "CoverArtUrlSmall":"https://img.sheetmusic.direct/catalogue/product/smd_000001/medium.jpg",
	  "CoverArtUrlLarge":"https://img.sheetmusic.direct/catalogue/product/smd_000001/large.jpg",
      "NumberOfPages":4,
      "MinimumPurchaseQuantity":1,
      "Price":2.49,
      "Currency":"GBP",
      "ReleaseDate":"2000-09-13T00:00:00",
      "LastUpdated":"2015-09-08T00:00:00",
      "AvailableCountries":"AD, AE, AF, AG, AI, AL, AM, AN, AO, AQ, AR, AS, AT, AU, AW, AX, AZ, BA, BB, BD, BE, BF, BG, BH, BI, BJ, BM, BN, BO, BR, BS, BT, BV, BW, BY, BZ, CA, CC, CD, CF, CG, CH, CI, CK, CL, CM, CN, CO, CR, CU, CV, CX, CY, CZ, DE, DJ, DK, DM, DO, DZ, EC, EE, EG, EH, ER, ES, ET, FI, FJ, FK, FM, FO, FR, GA, GB, GD, GE, GF, GG, GH, GI, GL, GM, GN, GP, GQ, GR, GS, GT, GU, GW, GY, HK, HM, HN, HR, HT, HU, ID, IE, IL, IN, IO, IQ, IR, IS, IT, JE, JM, JO, JP, KE, KG, KH, KI, KM, KN, KP, KR, KW, KY, KZ, LA, LB, LC, LI, LK, LR, LS, LT, LU, LV, LY, MA, MC, MD, ME, MG, MH, MK, ML, MM, MN, MO, MP, MQ, MR, MS, MT, MU, MV, MW, MX, MY, MZ, NA, NC, NE, NF, NG, NI, NL, NO, NP, NR, NU, NZ, OM, PA, PE, PF, PG, PH, PK, PL, PM, PN, PR, PS, PT, PW, PY, QA, RE, RO, RS, RU, RW, SA, SB, SC, SD, SE, SG, SH, SI, SJ, SK, SL, SM, SN, SO, SR, ST, SV, SY, SZ, TC, TD, TF, TG, TH, TJ, TK, TL, TM, TN, TO, TR, TT, TV, TW, TZ, UA, UG, UM, US, UY, UZ, VA, VC, VE, VG, VI, VN, VU, WF, WS, YE, YT, ZA, ZM, ZW",
      "Contributors":[
          {
              "Name": "Frank Sinatra",
              "ContributionType": "Artist",
              "NameReversed": "Sinatra, Frank"
          },
          {
              "Name": "Arthur Altman",
              "ContributionType": "Composer",
              "NameReversed": "Altman, Arthur"
          },
          {
              "Name": "Jack Lawrence",
              "ContributionType": "Composer",
              "NameReversed": "Lawrence, Jack"
          }
        ]
    }
    //followed by more products here
  ]
}

GET http://api.sheetmusicdirect.com/products/getdeletedproducts

Endpoint security signature: ["getdeletedproducts"][yourkey]

This endpoint is used to get a list of product IDs for products which have been deleted from the catalogue.

By default (i.e. with no parameters other than your key in the querystring), it will return product IDs for all products which have previously been available but are now deleted.

Optionally, it can take an "updatedsince" parameter to limit the scope of the query to products which have been deleted since you last ran a catalogue update. As with the other endpoints, the updatedsince parameter should be formatted YYYY-MM-DD, i.e. year-month-day.

Example call: http://api.sheetmusicdirect.com/products/getdeletedproducts?key=[your_key_here]&updatedsince=2015-09-01

Example response:

  {"deletedproducts":[16280,16317,16550,16754,17915]}