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

# H&M Stores

> H&M public store-locator directory, filtered to the requested two-letter country code. language is a storefront locale such as en_us (default). Preserves OPEN/TEMPCLOSED lifecycle status, local weekly hours, holiday exceptions and departments. The US source includes Puerto Rico; only US records are returned for query=us. No pagination, inventory, real-time open-now guarantee or closed-store history. Blocked or invalid source responses fail without a net SocialQuery charge.

Retrieve stores from [H\&M's public locator](https://www2.hm.com/en_us/customer-service/shopping-at-hm/store-locator.html), using its first-party directory API. No additional provider key is required.

Pass a two-letter country code in `query`, such as `us` or `de`. The optional `language` uses a storefront locale such as `en_us`, which is the default. Other query parameters are rejected. Country coverage follows the source; a market appearing in the countries endpoint does not guarantee a store listing.

`items[].store` contains store identity, source country, address, phone, coordinates, lifecycle status, opening date, weekly hours, date-specific exceptions and departments. `OPEN` means an operating store; `TEMPCLOSED` means temporarily closed. Neither value means the store is open at this moment. Hours are local wall-clock times, not UTC. Missing optional fields remain null.

Results are filtered to the requested country code. The US source also lists Puerto Rico; `query=us` excludes those records. `source_record_count` and `source_countries` disclose the original source scope. `total` and `returned_count` describe the filtered result, and `next_cursor` is null because the source returns one directory response.

This endpoint does not report stock, store inventory, permanent closure history or real-time open status. Blocked, malformed or mismatched source responses fail without a net SocialQuery credit charge. Fresh successful calls cost the documented credits; cached responses and successful idempotent replays are free.


## OpenAPI

````yaml GET /hm/stores
openapi: 3.1.0
info:
  title: SocialQuery API
  version: '2026-10-09'
  description: >-
    Documented requests for public-source records. Inspect accepted inputs and
    credit amounts, then verify the selected operation before integrating
    preview coverage.
servers:
  - url: https://socialquery.dev/v1
security:
  - apiKey: []
paths:
  /hm/stores:
    get:
      tags:
        - Hm
      summary: Hm Stores
      description: >-
        H&M public store-locator directory, filtered to the requested two-letter
        country code. language is a storefront locale such as en_us (default).
        Preserves OPEN/TEMPCLOSED lifecycle status, local weekly hours, holiday
        exceptions and departments. The US source includes Puerto Rico; only US
        records are returned for query=us. No pagination, inventory, real-time
        open-now guarantee or closed-store history. Blocked or invalid source
        responses fail without a net SocialQuery charge.
      operationId: get_hm_stores
      parameters:
        - name: query
          in: query
          required: true
          example: us
          schema:
            type: string
            pattern: ^[a-zA-Z]{2}$
          description: Two-letter country code, for example us or de.
        - name: language
          in: query
          required: false
          schema:
            type: string
            pattern: ^[a-zA-Z]{2}_[a-zA-Z]{2}$
            default: en_us
          description: Storefront locale used by the public directory.
        - name: Cache-Control
          in: header
          required: false
          example: no-cache
          schema:
            type: string
        - name: Idempotency-Key
          in: header
          required: false
          example: 7a5e1b4c-2d8f-4a3b-9c1e-6e8b4d2a1f3c
          schema:
            type: string
        - name: X-Max-Credits
          in: header
          required: false
          description: >-
            Optional nonnegative integer cap on the maximum request hold. A live
            request whose hold exceeds this cap returns 422
            CREDIT_BUDGET_EXCEEDED before spending. Metered holds use the
            requested limit; cache hits and successful idempotent replays cost
            zero.
          schema:
            type: integer
            minimum: 0
      responses:
        '200':
          description: >-
            H&M public store-locator directory, filtered to the requested
            two-letter country code. language is a storefront locale such as
            en_us (default). Preserves OPEN/TEMPCLOSED lifecycle status, local
            weekly hours, holiday exceptions and departments. The US source
            includes Puerto Rico; only US records are returned for query=us. No
            pagination, inventory, real-time open-now guarantee or closed-store
            history. Blocked or invalid source responses fail without a net
            SocialQuery charge.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/SocialQueryResponse'
                  - type: object
                    properties:
                      data:
                        type: object
                        properties:
                          items:
                            type: array
                            items:
                              type: object
                              properties:
                                store:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    name:
                                      type: string
                                    country_code:
                                      type: string
                                    country:
                                      type:
                                        - string
                                        - 'null'
                                    city:
                                      type:
                                        - string
                                        - 'null'
                                    phone:
                                      type:
                                        - string
                                        - 'null'
                                    opening_date:
                                      type:
                                        - string
                                        - 'null'
                                    status:
                                      type: string
                                      enum:
                                        - OPEN
                                        - TEMPCLOSED
                                    latitude:
                                      type: number
                                      minimum: -90
                                      maximum: 90
                                    longitude:
                                      type: number
                                      minimum: -180
                                      maximum: 180
                                    address:
                                      type: object
                                      properties:
                                        line1:
                                          type:
                                            - string
                                            - 'null'
                                        line2:
                                          type:
                                            - string
                                            - 'null'
                                        postal_code:
                                          type:
                                            - string
                                            - 'null'
                                        postal_city:
                                          type:
                                            - string
                                            - 'null'
                                        language:
                                          type:
                                            - string
                                            - 'null'
                                      required:
                                        - line1
                                        - line2
                                        - postal_code
                                        - postal_city
                                        - language
                                    opening_hours:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          day:
                                            type: integer
                                            minimum: 1
                                            maximum: 7
                                          name:
                                            type:
                                              - string
                                              - 'null'
                                          opens:
                                            type:
                                              - string
                                              - 'null'
                                          closes:
                                            type:
                                              - string
                                              - 'null'
                                        required:
                                          - day
                                          - name
                                          - opens
                                          - closes
                                    opening_hour_exceptions:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          date:
                                            type: string
                                          closed_all_day:
                                            type: boolean
                                          opens:
                                            type:
                                              - string
                                              - 'null'
                                          closes:
                                            type:
                                              - string
                                              - 'null'
                                        required:
                                          - date
                                          - closed_all_day
                                          - opens
                                          - closes
                                    departments:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          id:
                                            type:
                                              - string
                                              - 'null'
                                          name:
                                            type:
                                              - string
                                              - 'null'
                                          concepts:
                                            type: array
                                            items:
                                              type: object
                                              properties:
                                                id:
                                                  type:
                                                    - string
                                                    - 'null'
                                                name:
                                                  type:
                                                    - string
                                                    - 'null'
                                              required:
                                                - id
                                                - name
                                        required:
                                          - id
                                          - name
                                          - concepts
                                  required:
                                    - id
                                    - name
                                    - country_code
                                    - country
                                    - city
                                    - phone
                                    - opening_date
                                    - status
                                    - latitude
                                    - longitude
                                    - address
                                    - opening_hours
                                    - opening_hour_exceptions
                                    - departments
                              required:
                                - store
                          returned_count:
                            type: integer
                            minimum: 0
                          total:
                            type: integer
                            minimum: 0
                          next_cursor:
                            type: 'null'
                          country:
                            type: string
                          language:
                            type: string
                          source:
                            type: string
                          source_record_count:
                            type: integer
                            minimum: 0
                          source_countries:
                            type: array
                            items:
                              type: string
                          coverage_note:
                            type: string
                        required:
                          - items
                          - returned_count
                          - total
                          - next_cursor
                          - country
                          - language
                          - source
                          - source_record_count
                          - source_countries
                          - coverage_note
        '400':
          $ref: '#/components/responses/Error400'
        '401':
          $ref: '#/components/responses/Error401'
        '402':
          $ref: '#/components/responses/Error402'
        '403':
          $ref: '#/components/responses/Error403'
        '404':
          $ref: '#/components/responses/Error404'
        '405':
          $ref: '#/components/responses/Error405'
        '409':
          $ref: '#/components/responses/Error409'
        '422':
          $ref: '#/components/responses/Error422'
        '429':
          $ref: '#/components/responses/Error429'
        '500':
          $ref: '#/components/responses/Error500'
        '502':
          $ref: '#/components/responses/Error502'
        '503':
          $ref: '#/components/responses/Error503'
        '504':
          $ref: '#/components/responses/Error504'
components:
  schemas:
    SocialQueryResponse:
      type: object
      required:
        - success
        - platform
        - endpoint
        - credits_used
        - credits_remaining
        - request_id
        - cached
        - data
      properties:
        success:
          type: boolean
          const: true
        platform:
          type: string
        endpoint:
          type: string
        credits_used:
          type: integer
          minimum: 0
        credits_remaining:
          type:
            - integer
            - 'null'
        request_id:
          type: string
        cached:
          type: boolean
        data:
          type: object
          additionalProperties: true
          description: >-
            The selected operation determines the resource fields in this
            object. Source data can omit a metric or report it as null.
    SocialQueryError:
      type: object
      required:
        - success
        - platform
        - endpoint
        - credits_used
        - credits_remaining
        - request_id
        - cached
        - error
      properties:
        success:
          type: boolean
          const: false
        platform:
          type: string
        endpoint:
          type: string
        credits_used:
          type: integer
          minimum: 0
        credits_remaining:
          type:
            - integer
            - 'null'
        request_id:
          type: string
        cached:
          type: boolean
        error:
          type: object
          required:
            - code
            - type
            - message
            - status
            - doc_url
          properties:
            code:
              type: string
            type:
              type: string
            message:
              type: string
            status:
              type: integer
            doc_url:
              type: string
              format: uri
  responses:
    Error400:
      description: Upstream rejected the request.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error401:
      description: Missing, expired, invalid, or revoked API key.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error402:
      description: Insufficient SocialQuery credits.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error403:
      description: Key scope or provider policy denied access.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error404:
      description: Endpoint or upstream resource not found.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error405:
      description: HTTP method is not supported.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error409:
      description: Idempotency conflict or request in progress.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error422:
      description: Invalid parameters.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error429:
      description: Request limit reached.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error500:
      description: Request processing failed.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error502:
      description: Upstream service failed.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error503:
      description: Provider or required service is unavailable.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
    Error504:
      description: Upstream service timed out.
      headers:
        X-Request-Id:
          schema:
            type: string
        X-Credits-Used:
          schema:
            type: integer
        X-Credits-Remaining:
          schema:
            type: string
        X-Cache:
          schema:
            type: string
            enum:
              - HIT
              - MISS
              - BYPASS
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SocialQueryError'
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.