Notion API, select all pages with a specific emoji
Here’s something I used to select all subpages of a Notion page that used a specific emoji icon:
const notion = new Client({ auth: process.env.NOTION_API_KEY })
const pageId = process.env.NOTION_PAGE_ID
async function getAllSubpagesOfPage(page, notion) {
const pages = []
const blocks = await notion.blocks.children.list({
block_id: page.id,
})
for (const block of blocks.results) {
if (block.type === 'child_page') {
//we need to add icons to the block because
//it's not provided by default
const temp = await notion.pages.retrieve({ page_id: block.id })
block.icon = temp.icon
pages.push(block)
}
}
return pages
}
const pages = await getAllSubpagesOfPage(page, notion)
pages.map(async (page) => {
if (page.icon?.emoji === '✅') {
//ok the page has that emoji
}
})
I wrote 17 books to help you become a better developer, download them all at $0 cost by joining my newsletter
JOIN MY CODING BOOTCAMP, an amazing cohort course that will be a huge step up in your coding career - covering React, Next.js - next edition February 2025