Some time ago, I learnt GraphQL, for use on Bitquery, as a way of querying the blockchain for specific transactions that I've initiated to a particular contract.

Below's a specific query I've built:

query CallsToSmartContractAddressByCallerInAscendingTimestamp
($contractAddress: String, $caller: String)
{
  ethereum {
    smartContractCalls(
      caller: {is: $caller}
      options: {asc: "block.timestamp.unixtime"}
      smartContractAddress: {is: $contractAddress}
    ) {
      block {
        timestamp {
          unixtime
        }
      }
      transaction {
        hash
      }
    }
  }
}

The above GraphQL queries the Ethereum blockchain, for calls to the smart contract located at $contractAddress, by the caller $caller, and outputs the transaction hash, and the unixtime.

The parameters are specified in the following format, where .... are the actual values of the contract address and the caller address.

{
  "contractAddress": "0x...",
  "caller": "0x..."
}

What this does is to allow me to list all the transactions initiated by myself to a specific smart contract.