How to get products data by GraphQL Magento 2?

Product Query GraphQL Magento contains a lot of information for a product.

You can fetch the result of the product query in multiple ways, Using Search Criteria with equal or match type, By full-text search within the product query.

Pass only the required field on GraphQL Query so the output will be displayed only on those fields.

If you want to explore CMS GraphQL query, check the link, Get Cms Page and Cms blocks GraphQL Query.

Product Query Demo with multiple fields that will be displayed in the Output.

{
  products(search: "10001") {
    items {
      id
      name
      sku
      stock_status
      only_x_left_in_stock
      meta_keyword
      meta_description
      special_price
      special_from_date
      special_to_date
      attribute_set_id
      manufacturer
      canonical_url
      description {
        html
      }
      short_description {
        html
      }
      image {
        url
        label
        position
        disabled
      }
      small_image {
        url
        label
        position
        disabled
      }
      thumbnail {
        url
        label
        position
        disabled
      }
      new_from_date
      new_to_date
      price_tiers {
        quantity
        discount {
          percent_off
          amount_off
        }
        final_price {
          value
          currency
        }
      }
      ... on PhysicalProductInterface {
        weight
      }
      options_container
      created_at
      updated_at
      country_of_manufacture
      type_id
      websites {
        id
        name
        code
        sort_order
        default_group_id
        is_default
      }
      product_links {
        sku
        link_type
        linked_product_sku
        linked_product_type
        position
      }
      media_gallery {
        url
        label
        position
        disabled
        ... on ProductVideo {
          video_content {
            media_type
            video_provider
            video_url
            video_title
            video_description
            video_metadata
          }
        }
      }
      price_range {
        minimum_price {
          regular_price {
            value
            currency
          }
          final_price {
            value
            currency
          }
          fixed_product_taxes {
            label
            amount {
              value
              currency
            }
          }
        }
        maximum_price {
          discount {
            amount_off
            percent_off
          }
          fixed_product_taxes {
            label
            amount {
              value
              currency
            }
          }
        }
      }
      gift_message_available
      url_rewrites {
        parameters {
          name
          value
        }
      }
      related_products {
        id
        name
        sku
      }
      upsell_products {
        id
        name
        sku
      }
      crosssell_products {
        id
        name
        sku
      }
      categories {
        id
        url_key
        name
        position
        is_anchor
        url_suffix
        description
        display_mode
        meta_keywords
        path_in_store
        default_sort_by
        meta_description
        automatic_sorting
        custom_layout_update_file
        available_sort_by
        products {
          items {
            id
            sku
          }
        }
        cms_block {
          title
          content
          identifier
        }
      }
    }
  }
}

Given Query defines all the possible fields used for the product query but in real life, you can use the only required field inside the query.

In the given Product Query, We are expecting to return all the possible field that is used on the Products like,

  • Price Management,
  • Related,
  • Upsell,
  • Cross-Sell Products,
  • Tier Price,
  • Media Gallery Images,
  • Weight,
  • Product New From – To,
  • Custom Attributes of the Product,
  • Website Assignment,
  • Product Links,
  • URL Management,
  • Gift Messages,
  • Category Management.

Different ways to search product queries,

1.) Products By Search: You can filter the Product by the direct full-text search with the query.

{
  products(search: "crown") {
    items {
      id
      name
      sku
      special_price
    }
  }
}

2) Product by FilterEqualTypeInput attribute:

‘eq’ keywords,

{
  products(filter: { sku: { eq: "24-MB03" } }) {
    items {
      id
      name
      sku
      special_price
    }
  }
}

‘in’ keywords

{
  products(filter: { sku: { in: ["24-MB03", "24-MB04"] } }) {
    items {
      id
      name
      sku
      special_price
    }
  }
}

3) Product by FilterMatchTypeInput attribute:

{
  products(filter: { name: { match: "Top" } }) {
    items {
      id
      name
      sku
      stock_status
      special_price
      price_range {
        minimum_price {
          regular_price {
            value
            currency
          }
          final_price {
            value
            currency
          }
        }
      }
    }
  }
}

4) Product by FilterRangeTypeInput attribute:

{
  products(
    filter: { name: { match: "Top" }, price: { from: "20", to: "50" } }
  ) {
    items {
      id
      name
      sku
      stock_status
      special_price
      price_range {
        minimum_price {
          regular_price {
            value
            currency
          }
          final_price {
            value
            currency
          }
        }
      }
    }
  }
}

You can filter either full text or match or equal by custom attribute type based on your project scope of work.