So the idea will be to scrape from the `UnicodeCharacters.tr` file. Mr.Wizard shows some of that [here](https://mathematica.stackexchange.com/a/6363/38205). First we get the file and split it by line: ucTR = FrontEndExecute@ FrontEnd`FindFileOnPath["UnicodeCharacters.tr", "PrivatePathsTextResources"]; ucLines = Rest[StringSplit[ucTR // Import[#, "Text"] &, "\n"]]; Then we parse the file into a [`Dataset`](http://reference.wolfram.com/language/ref/Dataset.html) (hopefully I didn't miss anything): ucDataset = Dataset@Flatten@ StringCases[ucLines, codePoint : ("0x" ~~ WordCharacter ..) ~~ Whitespace ~~ ("\\[" ~~ name : WordCharacter ... ~~ "]") ~~ Whitespace ~~ "(" ~~ inputAliases : Except[")"] ... ~~ ")" ~~ Whitespace ~~ formattingType : (WordCharacter ..) ~~ Whitespace | "" ~~ precedence : (NumberString | "") ~~ Whitespace | "" ~~ associativity : (WordCharacter ...) ~~ Whitespace | "" ~~ leftWhiteSpace : (NumberString | "") ~~ Whitespace | "" ~~ rightWhiteSpace : (NumberString | "") ~~ Whitespace | "" ~~ interPaddingMaybe : (NumberString | "") ~~ Whitespace | "" ~~ partnerCharacter : (WordCharacter ...) :> <| "CodePoint" -> codePoint, "DisplayForm" -> Quiet@ Check[ ToExpression[ "\"" <> StringReplace[codePoint, "0x" -> "\\:"] <> "\""], None ], "MathematicaName" -> name, "InputAliases" -> StringCases[inputAliases, "$" ~~ inner : Except["$"] .. ~~ "$" :> inner], "FormattingType" -> formattingType, "OperatorPrecedence" -> If[StringLength@precedence === 0, Missing["NotAvailable"], ToExpression[precedence] ], "OperatorAssociativity" -> If[StringLength@associativity === 0, Missing["NotAvailable"], ToExpression[associativity] ], "WhitespacePaddingLeft" -> If[StringLength@leftWhiteSpace === 0, Missing["NotAvailable"], ToExpression[leftWhiteSpace] ], "WhitespacePaddingRight" -> If[StringLength@rightWhiteSpace === 0, Missing["NotAvailable"], ToExpression[rightWhiteSpace] ], "WhitespacePaddingInner" -> If[StringLength@interPaddingMaybe === 0, Missing["NotAvailable"], ToExpression[interPaddingMaybe] ], "PartnerCharacter" -> If[StringLength@partnerCharacter === 0, Missing["NotAvailable"], "0x" <> ToUpperCase@ StringTrim[partnerCharacter, StartOfString ~~ ("0" | "") ~~ "x"] ] |> ]; Then finally we can just use a simple [`Select`](http://reference.wolfram.com/language/ref/Select.html): ucDataset[Select[#FormattingType == "Infix" &], "MathematicaName"] // Normal // RandomSample[#, 25] & {"DotEqual", "LeftTeeVector", "DownRightTeeVector", \ "NotLeftTriangleBar", "Cap", "UpTeeArrow", "NotSucceedsTilde", \ "NotLeftTriangle", "NotElement", "Distributed", "Times", \ "NotGreaterTilde", "NotLess", "NotGreaterGreater", \ "DoubleLongLeftArrow", "NotLessEqual", "TildeTilde", \ "LeftArrowRightArrow", "Equilibrium", "Coproduct", \ "InvisibleApplication", "DownLeftTeeVector", "DoubleUpArrow", \ "DownTee", "DoubleLeftTee"} And here's a way to get those infix-types that are more hard-coded: ucDataset[ Select[ StringStartsQ[#MathematicaName, "Raw"] && #FormattingType == "Alias" &], "MathematicaName" ] // Normal // StringTrim[#, "Raw"] & {"Exclamation", "DoubleQuote", "NumberSign", "Dollar", "Percent", \ "Ampersand", "Quote", "LeftParenthesis", "RightParenthesis", "Star", \ "Plus", "Comma", "Dash", "Dot", "Slash", "Colon", "Semicolon", \ "Less", "Equal", "Greater", "Question", "At", "LeftBracket", \ "Backslash", "RightBracket", "Wedge", "Underscore", "Backquote", \ "LeftBrace", "VerticalBar", "RightBrace", "Tilde"} Note that we can use this for other things, too, say for all the open-close forms: Map[ With[{openChar = #}, <| "Opener" -> If[openChar["MathematicaName"] =!= "", openChar["MathematicaName"], openChar["DisplayForm"] ], "Closer" -> With[{ closeChar = Select[Normal@ucDataset, #["CodePoint"] === openChar["PartnerCharacter"] & ][[1]] }, If[closeChar["MathematicaName"] =!= "", closeChar["MathematicaName"], closeChar["DisplayForm"] ] ] |> ] &, Normal@ucDataset[Select[#FormattingType == "Open" &]] ] // Dataset [![bloop][1]][1] [1]: https://i.sstatic.net/TZXnd.png