> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer-stage.shipbob.dev/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer-stage.shipbob.dev/_mcp/server.

# Rate Shopping API

## Endpoint Details

* **API URL:** `<baseurl>/api/rate-shopping`
* **Method:** `POST`

### Headers

| Header        | Value              |
| ------------- | ------------------ |
| Authorization | `<PAT token>`      |
| Content-Type  | `application/json` |

> **Note:** All fields in the request are **mandatory**\
> The `serviceName` must be the name of your ship option in your ShipBob dashboard. For example, `"Standard Ground"`, `"Standard Premium"`, `"TikTok FBM US Standard"`, etc.

---

## Environments

* **Production:** `POST https://logisticslabelprintingapi.shipbob.com/api/rate-shopping`
* **Stage:** `POST https://logisticslabelprintingapi-stage.shipbob.dev/api/rate-shopping`

---

## Sample Requests

### 1. Standard Ground

**`POST https://logisticslabelprintingapi.shipbob.com/api/rate-shopping`**

```json POST https://logisticslabelprintingapi.shipbob.com/api/rate-shopping
{
  "actualWeight": 16.5, //OUNCES
  "packageDimensions": {
    "LengthInches": 12.0,
    "WidthInches": 8.0,
    "HeightInches": 6.0
  },
  "destinationAddress": {
    "address1": "123 Main Street",
    "address2": null,
    "city": "Chicago",
    "state": "IL",
    "zipCode": "60601",
    "countryISO": "US"
  },
  "fulfillmentCenterId": "33",
  "serviceName": "Standard Ground",
  "hasSignature": true,
  "insuranceAmount" : 200
}
```

### 2. Standard Premium

**`POST https://logisticslabelprintingapi.shipbob.com/api/rate-shopping`**

```json POST https://logisticslabelprintingapi.shipbob.com/api/rate-shopping
{
  "actualWeight": 16.5, //OUNCES
  "packageDimensions": {
    "LengthInches": 12.0,
    "WidthInches": 8.0,
    "HeightInches": 6.0
  },
  "destinationAddress": {
    "address1": "123 Main Street",
    "address2": null,
    "city": "Chicago",
    "state": "IL",
    "zipCode": "60601",
    "countryISO": "US"
  },
  "fulfillmentCenterId": "33",
  "serviceName": "Standard Premium",
  "hasSignature": false,
  "insuranceAmount" : 0
}
```

### 3. ShipBob Economy

**`POST https://logisticslabelprintingapi.shipbob.com/api/rate-shopping`**

```json POST https://logisticslabelprintingapi.shipbob.com/api/rate-shopping
{
  "actualWeight": 16.5, //OUNCES
  "packageDimensions": {
    "LengthInches": 12.0,
    "WidthInches": 8.0,
    "HeightInches": 6.0
  },
  "destinationAddress": {
    "address1": "123 Main Street",
    "address2": null,
    "city": "Chicago",
    "state": "IL",
    "zipCode": "60601",
    "countryISO": "US"
  },
  "fulfillmentCenterId": "33",
  "serviceName": "Standard Economy",
  "hasSignature": false,
  "insuranceAmount" : 0
}
```

### Sample Response

```json
{
  "data":[
    {
      "surcharges":{
        "isSuccess":false,
        "errorMessage":"No surcharges found against estimate rates.",
        "totalSurchargesAmount":0,
        "surchargesCurrencyCode":null,
        "surcharges":[]
      },
      "flatRate":7.6,
      "flatRateCurrencyCode":"USD",
      "shipOptionDisplayName":"Standard (Ground)",
      "isSuccess":true,
      "errorMessage":""
    }
  ],
  "isSuccess":true,
  "errorMessage":""
}
```

---

## Troubleshooting

* Ensure you provide `actualWeight` and all `packageDimensions` (`LengthInches`, `WidthInches`, `HeightInches`)
  * actualWeight should be in ounces.
  * LengthInches, WidthInches, HeightInches should be in inches.
* Pass a valid `fulfillmentCenterId`
  * For **Stage**, use `33`
  * For **Prod**, fetch your `fulfillmentCenterId` via:\
    `GET https://api.shipbob.com/2026-07/fulfillment-center`
* Get your `<PAT token>` from the ShipBob dashboard by going to **Integrations** → **API Tokens** → **Generate new token**. Your ShipBob rep will also provide this.