:doc:`Pricing <../../pricing>` / Client / get_products

************
get_products
************



.. py:method:: Pricing.Client.get_products(**kwargs)

  

  Returns a list of all products that match the filter criteria.

  

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/pricing-2017-10-15/GetProducts>`_  


  **Request Syntax**
  ::

    response = client.get_products(
        ServiceCode='string',
        Filters=[
            {
                'Type': 'TERM_MATCH'|'EQUALS'|'CONTAINS'|'ANY_OF'|'NONE_OF',
                'Field': 'string',
                'Value': 'string'
            },
        ],
        FormatVersion='string',
        NextToken='string',
        MaxResults=123
    )
    
  :type ServiceCode: string
  :param ServiceCode: **[REQUIRED]** 

    The code for the service whose products you want to retrieve.

    

  
  :type Filters: list
  :param Filters: 

    The list of filters that limit the returned products. only products that match all filters are returned.

    

  
    - *(dict) --* 

      The constraints that you want all returned products to match.

      

    
      - **Type** *(string) --* **[REQUIRED]** 

        The type of filter that you want to use.

         

        Valid values are:

         

        
        * ``TERM_MATCH``: Returns only products that match both the given filter field and the given value.
         
        * ``EQUALS``: Returns products that have a field value exactly matching the provided value.
         
        * ``CONTAINS``: Returns products where the field value contains the provided value as a substring.
         
        * ``ANY_OF``: Returns products where the field value is any of the provided values.
         
        * ``NONE_OF``: Returns products where the field value is not any of the provided values.
        

        

      
      - **Field** *(string) --* **[REQUIRED]** 

        The product metadata field that you want to filter on. You can filter by just the service code to see all products for a specific service, filter by just the attribute name to see a specific attribute for multiple services, or use both a service code and an attribute name to retrieve only products that match both fields.

         

        Valid values include: ``ServiceCode``, and all attribute names

         

        For example, you can filter by the ``AmazonEC2`` service code and the ``volumeType`` attribute name to get the prices for only Amazon EC2 volumes.

        

      
      - **Value** *(string) --* **[REQUIRED]** 

        The service code or attribute value that you want to filter by. If you're filtering by service code this is the actual service code, such as ``AmazonEC2``. If you're filtering by attribute name, this is the attribute value that you want the returned products to match, such as a ``Provisioned IOPS`` volume.

         

        For ``ANY_OF`` and ``NONE_OF`` filter types, you can provide multiple values as a comma-separated string. For example, ``t2.micro,t2.small,t2.medium`` or ``Compute optimized, GPU instance, Micro instances``.

        

      
    

  :type FormatVersion: string
  :param FormatVersion: 

    The format version that you want the response to be in.

     

    Valid values are: ``aws_v1``

    

  
  :type NextToken: string
  :param NextToken: 

    The pagination token that indicates the next set of results that you want to retrieve.

    

  
  :type MaxResults: integer
  :param MaxResults: 

    The maximum number of results to return in the response.

    

  
  
  :rtype: dict
  :returns: 
    
    **Response Syntax**

    
    ::

      {
          'FormatVersion': 'string',
          'PriceList': [
              'string',
          ],
          'NextToken': 'string'
      }
      
    **Response Structure**

    

    - *(dict) --* 
      

      - **FormatVersion** *(string) --* 

        The format version of the response. For example, aws_v1.

        
      

      - **PriceList** *(list) --* 

        The list of products that match your filters. The list contains both the product metadata and the price information.

        
        

        - *(string) --* 
    
      

      - **NextToken** *(string) --* 

        The pagination token that indicates the next set of results to retrieve.

        
  
  **Exceptions**
  
  *   :py:class:`Pricing.Client.exceptions.InvalidParameterException`

  
  *   :py:class:`Pricing.Client.exceptions.InvalidNextTokenException`

  
  *   :py:class:`Pricing.Client.exceptions.NotFoundException`

  
  *   :py:class:`Pricing.Client.exceptions.InternalErrorException`

  
  *   :py:class:`Pricing.Client.exceptions.ThrottlingException`

  
  *   :py:class:`Pricing.Client.exceptions.ExpiredNextTokenException`

  

  **Examples**

  This operation returns a list of products that match the given criteria.
  ::

    response = client.get_products(
        Filters=[
            {
                'Field': 'ServiceCode',
                'Type': 'TERM_MATCH',
                'Value': 'AmazonEC2',
            },
            {
                'Field': 'volumeType',
                'Type': 'TERM_MATCH',
                'Value': 'Provisioned IOPS',
            },
        ],
        FormatVersion='aws_v1',
        MaxResults=1,
    )
    
    print(response)

  
  Expected Output:
  ::

    {
        'FormatVersion': 'aws_v1',
        'NextToken': '57r3EXAMPLEujbzWfHF7Ciw==:ywSmZsD3mtpQmQLQ5XfOsIMkYybSj+vAT+kGmwMFq+K9DGmIoJkz7lunVeamiOPgthdWSO2a7YKojCO+zY4dJmuNl2QvbNhXs+AJ2Ufn7xGmJncNI2TsEuAsVCUfTAvAQNcwwamtk6XuZ4YdNnooV62FjkV3ZAn40d9+wAxV7+FImvhUHi/+f8afgZdGh2zPUlH8jlV9uUtj0oHp8+DhPUuHXh+WBII1E/aoKpPSm3c=',
        'PriceList': [
            '{"product":{"productFamily":"Storage","attributes":{"storageMedia":"SSD-backed","maxThroughputvolume":"320 MB/sec","volumeType":"Provisioned IOPS","maxIopsvolume":"20000","servicecode":"AmazonEC2","usagetype":"CAN1-EBS:VolumeUsage.piops","locationType":"AWS Region","location":"Canada (Central)","servicename":"Amazon Elastic Compute Cloud","maxVolumeSize":"16 TiB","operation":""},"sku":"WQGC34PB2AWS8R4U"},"serviceCode":"AmazonEC2","terms":{"OnDemand":{"WQGC34PB2AWS8R4U.JRTCKXETXF":{"priceDimensions":{"WQGC34PB2AWS8R4U.JRTCKXETXF.6YS6EN2CT7":{"unit":"GB-Mo","endRange":"Inf","description":"$0.138 per GB-month of Provisioned IOPS SSD (io1)  provisioned storage - Canada (Central)","appliesTo":[],"rateCode":"WQGC34PB2AWS8R4U.JRTCKXETXF.6YS6EN2CT7","beginRange":"0","pricePerUnit":{"USD":"0.1380000000"}}},"sku":"WQGC34PB2AWS8R4U","effectiveDate":"2017-08-01T00:00:00Z","offerTermCode":"JRTCKXETXF","termAttributes":{}}}},"version":"20170901182201","publicationDate":"2017-09-01T18:22:01Z"}',
        ],
        'ResponseMetadata': {
            '...': '...',
        },
    }

  