## Table of Contents

- [selector](#selector)
- [Fallback selectors](#fallback-selectors)

---

[API](https://microlink.io/docs/api/getting-started/overview)

[GUIDES](https://microlink.io/docs/guides) [MQL](https://microlink.io/docs/mql/getting-started/overview) [SDK](https://microlink.io/docs/sdk/getting-started/overview) [CARDS](https://microlink.io/docs/cards/getting-started/overview)

API GUIDES MQL SDK CARDS

Getting Started

[Overview](https://microlink.io/docs/mql/getting-started/overview)

[Installation](https://microlink.io/docs/mql/getting-started/installation)

[Usage](https://microlink.io/docs/mql/getting-started/usage)

[API](https://microlink.io/docs/mql/getting-started/api)

Rules Definition

[Basic rule](https://microlink.io/docs/mql/rules/basic)

[Nested rules](https://microlink.io/docs/mql/rules/nested)

[Rules fallbacks](https://microlink.io/docs/mql/rules/fallbacks)

Data definition

[attr](https://microlink.io/docs/mql/data/attr)

[evaluate](https://microlink.io/docs/mql/data/evaluate)

[selector](https://microlink.io/docs/mql/data/selector)

[selectorAll](https://microlink.io/docs/mql/data/selectorAll)

[type](https://microlink.io/docs/mql/data/type)

API GUIDES MQL SDK CARDS

Getting Started

[Overview](https://microlink.io/docs/mql/getting-started/overview)

[Installation](https://microlink.io/docs/mql/getting-started/installation)

[Usage](https://microlink.io/docs/mql/getting-started/usage)

[API](https://microlink.io/docs/mql/getting-started/api)

Rules Definition

[Basic rule](https://microlink.io/docs/mql/rules/basic)

[Nested rules](https://microlink.io/docs/mql/rules/nested)

[Rules fallbacks](https://microlink.io/docs/mql/rules/fallbacks)

Data definition

[attr](https://microlink.io/docs/mql/data/attr)

[evaluate](https://microlink.io/docs/mql/data/evaluate)

[selector](https://microlink.io/docs/mql/data/selector)

[selectorAll](https://microlink.io/docs/mql/data/selectorAll)

[type](https://microlink.io/docs/mql/data/type)

## selector

[Copy for LLM](https://microlink.io/docs/mql/data/selector.md "Copy content for LLM")

\|

[View as Markdown](https://microlink.io/docs/mql/data/selector.md "View content as Markdown")

Type:

\<string\> \| \<string\[\]\>

\
Values: [CSS selector](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors)

It defines the

[HTML element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element)

you want to pick from the HTML markup over the [url](https://microlink.io/docs/api/parameters/url):

```js
const mql = require('@microlink/mql')

const github = username =>

  mql(`https://github.com/${username}`, {

    data: {

      avatar: {

        selector: 'meta[property="og:image"]:not([content=""])',

        attr: 'content',

        type: 'image'

      }

    }

  })

const username = 'kikobeats'

const { response, data } = await github(username)

console.log(`GitHub avatar for @${username}: ${data.avatar.url} (${data.avatar.size_pretty})`)
```

It's equivalent to

[Document.querySelector()](https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector)

and any [CSS selector](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors) can be specified, such as:

- An HTML tag (e.g., 'img').
- A CSS class or pseudo class, id or data-attribute (e.g., '#avatar').
- A combination of both (e.g., 'img:first').

When `selector` is omitted, the [attr](https://microlink.io/docs/mql/data/attr) operates on the entire page. This is useful for whole-page serialization (including formats like 'markdown'):

```js
const mql = require('@microlink/mql')

const { data } = await mql('https://example.com', {

  data: {

    content: {

      attr: 'markdown'

    }

  }

})

console.log(data.content)

// => '# Example Domain\n\nThis domain is for use in…'
```

Omitting selector with attr is useful for LLM pipelines, content indexing, or feeding page content into downstream processing. Unsupported attr values fall back to HTML.

## Fallback selectors

If you pass a collection of selectors, they are considered as fallback values:

```jsx
const mql = require('@microlink/mql')

const github = username =>

  mql(`https://github.com/${username}`, {

    data: {

      avatar: [

        {

          selector: 'meta[name="twitter:image:src"]:not([content=""])',

          attr: 'content',

          type: 'image'

        },

        {

          selector: 'meta[property="og:image"]:not([content=""])',

          attr: 'content',

          type: 'image'

        }

      ]

    }

  })

const username = 'kikobeats'

const { response, data } = await github(username)

console.log(`GitHub avatar for @${username}: ${data.avatar.url} (${data.avatar.size_pretty})`)
```

Using multiple selectors makes the data rule more generic.

The position into the collection matters: The first data rule that returns a truthy value after applying type will be used, discarding the rest of the selectors.

Last updated on February 7, 2026

[Edit on GitHub](https://github.com/microlinkhq/www/blob/master/src/content/docs/mql/data/selector.md)