How to get product stock qty and stock information by product id in Magento 2?

You can get Product stock related information using the Catalog Inventory module of Magento 2.

Magento\CatalogInventory\Api\StockRegistryInterface is used for getting Stock Information from the Product.

If you want to only get Product Quantity and Product status might be it’s in stock or not then refer Get Product quantity from product object

Let’ create Block file and call function from a block,

<?php
namespace Rbj\Stockinfo\Block;

class Stockinfo extends \Magento\Framework\View\Element\Template
{
    public function __construct(
        \Magento\Backend\Block\Template\Context $context,
        \Magento\CatalogInventory\Api\StockRegistryInterface $stockItemRepository,
        array $data = []
    )
    {
        $this->stockItemRepository = $stockItemRepository;
        parent::__construct($context, $data);
    }
    /* Using Product id */
    public function getStockItem($productId)
    {
        return $this->stockItemRepository->getStockItem($productId);
    }
    /* Using Product SKU */
    public function getStockItemBySku($productSku)
    {
        return $this->stockItemRepository->getStockItemBySku($productSku);
    }
}

Now, We can get the product stock information by id and SKU in a template file using the below way.

$id = 1; //Product id
/* by Product id */
$productStockById = $block->getStockItem($id);

/* by Product SKU */
$sku = '24-MB01';
$productStockBySku = $block->getStockItemBySku($sku);
echo "<pre>";print_r($productStockBySku->debug());

The output will be something like below,

Array
(
    [item_id] => 1
    [product_id] => 1
    [stock_id] => 1
    [qty] => 100.0000
    [min_qty] => 0.0000
    [use_config_min_qty] => 1
    [is_qty_decimal] => 0
    [backorders] => 0
    [use_config_backorders] => 1
    [min_sale_qty] => 1.0000
    [use_config_min_sale_qty] => 1
    [max_sale_qty] => 10000.0000
    [use_config_max_sale_qty] => 1
    [is_in_stock] => 1
    [notify_stock_qty] => 1.0000
    [use_config_notify_stock_qty] => 1
    [manage_stock] => 1
    [use_config_manage_stock] => 1
    [stock_status_changed_auto] => 0
    [use_config_qty_increments] => 1
    [qty_increments] => 1.0000
    [use_config_enable_qty_inc] => 1
    [enable_qty_increments] => 0
    [is_decimal_divided] => 0
    [website_id] => 0
    [type_id] => simple
)

You can get qty, min_sale_qty, is_in_stock, backorder, stock_id, website_id related data with ease.