<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="pagespeedonline_v2.html">PageSpeed Insights API</a> . <a href="pagespeedonline_v2.pagespeedapi.html">pagespeedapi</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#runpagespeed">runpagespeed(url, screenshot=None, locale=None, rule=None, strategy=None, filter_third_party_resources=None)</a></code></p>
<p class="firstline">Runs PageSpeed analysis on the page at the specified URL, and returns PageSpeed scores, a list of suggestions to make that page faster, and other information.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="runpagespeed">runpagespeed(url, screenshot=None, locale=None, rule=None, strategy=None, filter_third_party_resources=None)</code>
  <pre>Runs PageSpeed analysis on the page at the specified URL, and returns PageSpeed scores, a list of suggestions to make that page faster, and other information.

Args:
  url: string, The URL to fetch and analyze (required)
  screenshot: boolean, Indicates if binary data containing a screenshot should be included
  locale: string, The locale used to localize formatted results
  rule: string, A PageSpeed rule to run; if none are given, all rules are run (repeated)
  strategy: string, The analysis strategy to use
    Allowed values
      desktop - Fetch and analyze the URL for desktop browsers
      mobile - Fetch and analyze the URL for mobile devices
  filter_third_party_resources: boolean, Indicates if third party resources should be filtered out before PageSpeed analysis.

Returns:
  An object of the form:

    {
    "kind": "pagespeedonline#result", # Kind of result.
    "formattedResults": { # Localized PageSpeed results. Contains a ruleResults entry for each PageSpeed rule instantiated and run by the server.
      "locale": "A String", # The locale of the formattedResults, e.g. "en_US".
      "ruleResults": { # Dictionary of formatted rule results, with one entry for each PageSpeed rule instantiated and run by the server.
        "a_key": { # The enum-like identifier for this rule. For instance "EnableKeepAlive" or "AvoidCssImport". Not localized.
          "localizedRuleName": "A String", # Localized name of the rule, intended for presentation to a user.
          "urlBlocks": [ # List of blocks of URLs. Each block may contain a heading and a list of URLs. Each URL may optionally include additional details.
            {
              "header": { # Heading to be displayed with the list of URLs.
                "args": [ # List of arguments for the format string.
                  {
                    "rects": [ # The screen rectangles being referred to, with dimensions measured in CSS pixels. This is only ever used for SNAPSHOT_RECT arguments. If this is absent for a SNAPSHOT_RECT argument, it means that that argument refers to the entire snapshot.
                      {
                        "width": 42, # The width of the rect.
                        "top": 42, # The top coordinate of the rect, in page coordinates.
                        "left": 42, # The left coordinate of the rect, in page coordinates.
                        "height": 42, # The height of the rect.
                      },
                    ],
                    "value": "A String", # Argument value, as a localized string.
                    "type": "A String", # Type of argument. One of URL, STRING_LITERAL, INT_LITERAL, BYTES, DURATION, VERBATIM_STRING, PERCENTAGE, HYPERLINK, or SNAPSHOT_RECT.
                    "secondary_rects": [ # Secondary screen rectangles being referred to, with dimensions measured in CSS pixels. This is only ever used for SNAPSHOT_RECT arguments.
                      {
                        "width": 42, # The width of the rect.
                        "top": 42, # The top coordinate of the rect, in page coordinates.
                        "left": 42, # The left coordinate of the rect, in page coordinates.
                        "height": 42, # The height of the rect.
                      },
                    ],
                    "key": "A String", # The placeholder key for this arg, as a string.
                  },
                ],
                "format": "A String", # A localized format string with {{FOO}} placeholders, where 'FOO' is the key of the argument whose value should be substituted. For HYPERLINK arguments, the format string will instead contain {{BEGIN_FOO}} and {{END_FOO}} for the argument with key 'FOO'.
              },
              "urls": [ # List of entries that provide information about URLs in the url block. Optional.
                {
                  "details": [ # List of entries that provide additional details about a single URL. Optional.
                    {
                      "args": [ # List of arguments for the format string.
                        {
                          "rects": [ # The screen rectangles being referred to, with dimensions measured in CSS pixels. This is only ever used for SNAPSHOT_RECT arguments. If this is absent for a SNAPSHOT_RECT argument, it means that that argument refers to the entire snapshot.
                            {
                              "width": 42, # The width of the rect.
                              "top": 42, # The top coordinate of the rect, in page coordinates.
                              "left": 42, # The left coordinate of the rect, in page coordinates.
                              "height": 42, # The height of the rect.
                            },
                          ],
                          "value": "A String", # Argument value, as a localized string.
                          "type": "A String", # Type of argument. One of URL, STRING_LITERAL, INT_LITERAL, BYTES, DURATION, VERBATIM_STRING, PERCENTAGE, HYPERLINK, or SNAPSHOT_RECT.
                          "secondary_rects": [ # Secondary screen rectangles being referred to, with dimensions measured in CSS pixels. This is only ever used for SNAPSHOT_RECT arguments.
                            {
                              "width": 42, # The width of the rect.
                              "top": 42, # The top coordinate of the rect, in page coordinates.
                              "left": 42, # The left coordinate of the rect, in page coordinates.
                              "height": 42, # The height of the rect.
                            },
                          ],
                          "key": "A String", # The placeholder key for this arg, as a string.
                        },
                      ],
                      "format": "A String", # A localized format string with {{FOO}} placeholders, where 'FOO' is the key of the argument whose value should be substituted. For HYPERLINK arguments, the format string will instead contain {{BEGIN_FOO}} and {{END_FOO}} for the argument with key 'FOO'.
                    },
                  ],
                  "result": { # A format string that gives information about the URL, and a list of arguments for that format string.
                    "args": [ # List of arguments for the format string.
                      {
                        "rects": [ # The screen rectangles being referred to, with dimensions measured in CSS pixels. This is only ever used for SNAPSHOT_RECT arguments. If this is absent for a SNAPSHOT_RECT argument, it means that that argument refers to the entire snapshot.
                          {
                            "width": 42, # The width of the rect.
                            "top": 42, # The top coordinate of the rect, in page coordinates.
                            "left": 42, # The left coordinate of the rect, in page coordinates.
                            "height": 42, # The height of the rect.
                          },
                        ],
                        "value": "A String", # Argument value, as a localized string.
                        "type": "A String", # Type of argument. One of URL, STRING_LITERAL, INT_LITERAL, BYTES, DURATION, VERBATIM_STRING, PERCENTAGE, HYPERLINK, or SNAPSHOT_RECT.
                        "secondary_rects": [ # Secondary screen rectangles being referred to, with dimensions measured in CSS pixels. This is only ever used for SNAPSHOT_RECT arguments.
                          {
                            "width": 42, # The width of the rect.
                            "top": 42, # The top coordinate of the rect, in page coordinates.
                            "left": 42, # The left coordinate of the rect, in page coordinates.
                            "height": 42, # The height of the rect.
                          },
                        ],
                        "key": "A String", # The placeholder key for this arg, as a string.
                      },
                    ],
                    "format": "A String", # A localized format string with {{FOO}} placeholders, where 'FOO' is the key of the argument whose value should be substituted. For HYPERLINK arguments, the format string will instead contain {{BEGIN_FOO}} and {{END_FOO}} for the argument with key 'FOO'.
                  },
                },
              ],
            },
          ],
          "ruleImpact": 3.14, # The impact (unbounded floating point value) that implementing the suggestions for this rule would have on making the page faster. Impact is comparable between rules to determine which rule's suggestions would have a higher or lower impact on making a page faster. For instance, if enabling compression would save 1MB, while optimizing images would save 500kB, the enable compression rule would have 2x the impact of the image optimization rule, all other things being equal.
          "groups": [ # List of rule groups that this rule belongs to. Each entry in the list is one of "SPEED" or "USABILITY".
            "A String",
          ],
          "summary": { # A brief summary description for the rule, indicating at a high level what should be done to follow the rule and what benefit can be gained by doing so.
            "args": [ # List of arguments for the format string.
              {
                "rects": [ # The screen rectangles being referred to, with dimensions measured in CSS pixels. This is only ever used for SNAPSHOT_RECT arguments. If this is absent for a SNAPSHOT_RECT argument, it means that that argument refers to the entire snapshot.
                  {
                    "width": 42, # The width of the rect.
                    "top": 42, # The top coordinate of the rect, in page coordinates.
                    "left": 42, # The left coordinate of the rect, in page coordinates.
                    "height": 42, # The height of the rect.
                  },
                ],
                "value": "A String", # Argument value, as a localized string.
                "type": "A String", # Type of argument. One of URL, STRING_LITERAL, INT_LITERAL, BYTES, DURATION, VERBATIM_STRING, PERCENTAGE, HYPERLINK, or SNAPSHOT_RECT.
                "secondary_rects": [ # Secondary screen rectangles being referred to, with dimensions measured in CSS pixels. This is only ever used for SNAPSHOT_RECT arguments.
                  {
                    "width": 42, # The width of the rect.
                    "top": 42, # The top coordinate of the rect, in page coordinates.
                    "left": 42, # The left coordinate of the rect, in page coordinates.
                    "height": 42, # The height of the rect.
                  },
                ],
                "key": "A String", # The placeholder key for this arg, as a string.
              },
            ],
            "format": "A String", # A localized format string with {{FOO}} placeholders, where 'FOO' is the key of the argument whose value should be substituted. For HYPERLINK arguments, the format string will instead contain {{BEGIN_FOO}} and {{END_FOO}} for the argument with key 'FOO'.
          },
        },
      },
    },
    "screenshot": { # Base64-encoded screenshot of the page that was analyzed.
      "height": 42, # Height of screenshot in pixels.
      "width": 42, # Width of screenshot in pixels.
      "key": "A String", # Unique string key, if any, identifying this image.
      "page_rect": { # The region of the page that is captured by this image, with dimensions measured in CSS pixels.
        "width": 42, # The width of the rect.
        "top": 42, # The top coordinate of the rect, in page coordinates.
        "left": 42, # The left coordinate of the rect, in page coordinates.
        "height": 42, # The height of the rect.
      },
      "data": "A String", # Image data base64 encoded.
      "mime_type": "A String", # Mime type of image data (e.g. "image/jpeg").
    },
    "title": "A String", # Title of the page, as displayed in the browser's title bar.
    "ruleGroups": { # A map with one entry for each rule group in these results.
      "a_key": { # The name of this rule group: one of "SPEED" or "USABILITY".
        "score": 42, # The score (0-100) for this rule group, which indicates how much better a page could be in that category (e.g. how much faster, or how much more usable). A high score indicates little room for improvement, while a lower score indicates more room for improvement.
      },
    },
    "version": { # The version of PageSpeed used to generate these results.
      "major": 42, # The major version number of PageSpeed used to generate these results.
      "minor": 42, # The minor version number of PageSpeed used to generate these results.
    },
    "responseCode": 42, # Response code for the document. 200 indicates a normal page load. 4xx/5xx indicates an error.
    "invalidRules": [ # List of rules that were specified in the request, but which the server did not know how to instantiate.
      "A String",
    ],
    "pageStats": { # Summary statistics for the page, such as number of JavaScript bytes, number of HTML bytes, etc.
      "otherResponseBytes": "A String", # Number of response bytes for other resources on the page.
      "flashResponseBytes": "A String", # Number of response bytes for flash resources on the page.
      "totalRequestBytes": "A String", # Total size of all request bytes sent by the page.
      "numberCssResources": 42, # Number of CSS resources referenced by the page.
      "numberResources": 42, # Number of HTTP resources loaded by the page.
      "cssResponseBytes": "A String", # Number of uncompressed response bytes for CSS resources on the page.
      "javascriptResponseBytes": "A String", # Number of uncompressed response bytes for JS resources on the page.
      "imageResponseBytes": "A String", # Number of response bytes for image resources on the page.
      "numberHosts": 42, # Number of unique hosts referenced by the page.
      "numberStaticResources": 42, # Number of static (i.e. cacheable) resources on the page.
      "htmlResponseBytes": "A String", # Number of uncompressed response bytes for the main HTML document and all iframes on the page.
      "numberJsResources": 42, # Number of JavaScript resources referenced by the page.
      "textResponseBytes": "A String", # Number of uncompressed response bytes for text resources not covered by other statistics (i.e non-HTML, non-script, non-CSS resources) on the page.
    },
    "id": "A String", # Canonicalized and final URL for the document, after following page redirects (if any).
  }</pre>
</div>

</body></html>